The previous change used some 3.3-specific functions.
We still support 3.2 so revert to 3.2-compatible calls.

Reported-by: S.Çağlar Onur <cag...@10ur.org>
Signed-off-by: Stéphane Graber <stgra...@ubuntu.com>
---
 src/python-lxc/lxc.c | 14 ++++++++++++--
 1 file changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/python-lxc/lxc.c b/src/python-lxc/lxc.c
index 85710d6..4e9fde7 100644
--- a/src/python-lxc/lxc.c
+++ b/src/python-lxc/lxc.c
@@ -49,18 +49,27 @@ convert_tuple_to_char_pointer_array(PyObject *argv) {
         assert(pyobj != NULL);
 
         char *str = NULL;
+        PyObject *pystr = NULL;
 
         if (!PyUnicode_Check(pyobj)) {
             PyErr_SetString(PyExc_ValueError, "Expected a string");
             goto error;
         }
 
-        str = PyUnicode_AsUTF8(pyobj);
-        if (!str) {
+        pystr = PyUnicode_AsUTF8String(pyobj);
+        if (!pystr) {
             /* Maybe it wasn't UTF-8 encoded.  An exception is already set. */
             goto error;
         }
 
+        str = PyBytes_AsString(pystr);
+        if (!str) {
+            /* Maybe pystr wasn't a valid object. An exception is already set.
+             */
+            Py_DECREF(pystr);
+            goto error;
+        }
+
         /* We must make a copy of str, because it points into internal memory
          * which we do not own.  Assume it's NULL terminated, otherwise we'd
          * have to use PyUnicode_AsUTF8AndSize() and be explicit about copying
@@ -71,6 +80,7 @@ convert_tuple_to_char_pointer_array(PyObject *argv) {
         /* Do not decref pyobj since we stole a reference by using
          * PyTuple_GET_ITEM().
          */
+        Py_DECREF(pystr);
         if (result[i] == NULL) {
             PyErr_SetNone(PyExc_MemoryError);
             goto error;
-- 
1.8.1.2


------------------------------------------------------------------------------
Try New Relic Now & We'll Send You this Cool Shirt
New Relic is the only SaaS-based application performance monitoring service 
that delivers powerful full stack analytics. Optimize and monitor your
browser, app, & servers with just a few lines of code. Try New Relic
and get this awesome Nerd Life shirt! http://p.sf.net/sfu/newrelic_d2d_apr
_______________________________________________
Lxc-devel mailing list
Lxc-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/lxc-devel

Reply via email to