mirror of
git://github.com/lxc/lxc
synced 2025-08-31 16:29:29 +00:00
Merge pull request #1468 from stgraber/master
python3: Deal with potential NULL char*
This commit is contained in:
@@ -430,7 +430,14 @@ LXC_get_global_config_item(PyObject *self, PyObject *args, PyObject *kwds)
|
|||||||
static PyObject *
|
static PyObject *
|
||||||
LXC_get_version(PyObject *self, PyObject *args)
|
LXC_get_version(PyObject *self, PyObject *args)
|
||||||
{
|
{
|
||||||
return PyUnicode_FromString(lxc_get_version());
|
const char *rv = NULL;
|
||||||
|
|
||||||
|
rv = lxc_get_version();
|
||||||
|
if (!rv) {
|
||||||
|
return PyUnicode_FromString("");
|
||||||
|
}
|
||||||
|
|
||||||
|
return PyUnicode_FromString(rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
@@ -484,6 +491,10 @@ LXC_list_containers(PyObject *self, PyObject *args, PyObject *kwds)
|
|||||||
/* Generate the tuple */
|
/* Generate the tuple */
|
||||||
list = PyTuple_New(list_count);
|
list = PyTuple_New(list_count);
|
||||||
for (i = 0; i < list_count; i++) {
|
for (i = 0; i < list_count; i++) {
|
||||||
|
if (!names[i]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
PyTuple_SET_ITEM(list, i, PyUnicode_FromString(names[i]));
|
PyTuple_SET_ITEM(list, i, PyUnicode_FromString(names[i]));
|
||||||
free(names[i]);
|
free(names[i]);
|
||||||
}
|
}
|
||||||
@@ -528,7 +539,7 @@ Container_init(Container *self, PyObject *args, PyObject *kwds)
|
|||||||
Py_XDECREF(fs_config_path);
|
Py_XDECREF(fs_config_path);
|
||||||
|
|
||||||
PyErr_Format(PyExc_RuntimeError, "%s:%s:%d: error during init for container '%s'.",
|
PyErr_Format(PyExc_RuntimeError, "%s:%s:%d: error during init for container '%s'.",
|
||||||
__FUNCTION__, __FILE__, __LINE__, name);
|
__FUNCTION__, __FILE__, __LINE__, name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -550,8 +561,14 @@ Container_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
|
|||||||
static PyObject *
|
static PyObject *
|
||||||
Container_config_file_name(Container *self, void *closure)
|
Container_config_file_name(Container *self, void *closure)
|
||||||
{
|
{
|
||||||
return PyUnicode_FromString(
|
char *rv = NULL;
|
||||||
self->container->config_file_name(self->container));
|
|
||||||
|
rv = self->container->config_file_name(self->container);
|
||||||
|
if (!rv) {
|
||||||
|
return PyUnicode_FromString("");
|
||||||
|
}
|
||||||
|
|
||||||
|
return PyUnicode_FromString(rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
@@ -583,6 +600,10 @@ Container_init_pid(Container *self, void *closure)
|
|||||||
static PyObject *
|
static PyObject *
|
||||||
Container_name(Container *self, void *closure)
|
Container_name(Container *self, void *closure)
|
||||||
{
|
{
|
||||||
|
if (!self->container->name) {
|
||||||
|
return PyUnicode_FromString("");
|
||||||
|
}
|
||||||
|
|
||||||
return PyUnicode_FromString(self->container->name);
|
return PyUnicode_FromString(self->container->name);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -599,7 +620,15 @@ Container_running(Container *self, void *closure)
|
|||||||
static PyObject *
|
static PyObject *
|
||||||
Container_state(Container *self, void *closure)
|
Container_state(Container *self, void *closure)
|
||||||
{
|
{
|
||||||
return PyUnicode_FromString(self->container->state(self->container));
|
const char *rv = NULL;
|
||||||
|
|
||||||
|
rv = self->container->state(self->container);
|
||||||
|
|
||||||
|
if (!rv) {
|
||||||
|
return PyUnicode_FromString("");
|
||||||
|
}
|
||||||
|
|
||||||
|
return PyUnicode_FromString(rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Container Functions */
|
/* Container Functions */
|
||||||
@@ -1023,8 +1052,15 @@ Container_get_config_item(Container *self, PyObject *args, PyObject *kwds)
|
|||||||
static PyObject *
|
static PyObject *
|
||||||
Container_get_config_path(Container *self, PyObject *args, PyObject *kwds)
|
Container_get_config_path(Container *self, PyObject *args, PyObject *kwds)
|
||||||
{
|
{
|
||||||
return PyUnicode_FromString(
|
const char *rv = NULL;
|
||||||
self->container->get_config_path(self->container));
|
|
||||||
|
rv = self->container->get_config_path(self->container);
|
||||||
|
|
||||||
|
if (!rv) {
|
||||||
|
return PyUnicode_FromString("");
|
||||||
|
}
|
||||||
|
|
||||||
|
return PyUnicode_FromString(rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject *
|
static PyObject *
|
||||||
@@ -1088,6 +1124,11 @@ Container_get_interfaces(Container *self)
|
|||||||
/* Add the entries to the tuple and free the memory */
|
/* Add the entries to the tuple and free the memory */
|
||||||
i = 0;
|
i = 0;
|
||||||
while (interfaces[i]) {
|
while (interfaces[i]) {
|
||||||
|
if (!interfaces[i]) {
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
PyObject *unicode = PyUnicode_FromString(interfaces[i]);
|
PyObject *unicode = PyUnicode_FromString(interfaces[i]);
|
||||||
if (!unicode) {
|
if (!unicode) {
|
||||||
Py_DECREF(ret);
|
Py_DECREF(ret);
|
||||||
@@ -1143,6 +1184,11 @@ Container_get_ips(Container *self, PyObject *args, PyObject *kwds)
|
|||||||
/* Add the entries to the tuple and free the memory */
|
/* Add the entries to the tuple and free the memory */
|
||||||
i = 0;
|
i = 0;
|
||||||
while (ips[i]) {
|
while (ips[i]) {
|
||||||
|
if (!ips[i]) {
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
PyObject *unicode = PyUnicode_FromString(ips[i]);
|
PyObject *unicode = PyUnicode_FromString(ips[i]);
|
||||||
if (!unicode) {
|
if (!unicode) {
|
||||||
Py_DECREF(ret);
|
Py_DECREF(ret);
|
||||||
|
Reference in New Issue
Block a user