tools: Fix a few error-path memory leaks.
authorKeir Fraser <keir.fraser@citrix.com>
Tue, 9 Dec 2008 12:53:19 +0000 (12:53 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Tue, 9 Dec 2008 12:53:19 +0000 (12:53 +0000)
Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
tools/python/xen/lowlevel/acm/acm.c
tools/python/xen/lowlevel/flask/flask.c
tools/python/xen/lowlevel/xc/xc.c

index 662c7f72d4407282bea04bea2c0c7910cd43432e..d426420d703fbd1c468595070542428e6ec03147 100644 (file)
@@ -68,6 +68,8 @@ static void *__getssid(int domid, uint32_t *buflen)
         goto out2;
     } else {
         *buflen = SSID_BUFFER_SIZE;
+        free(buf);
+        buf = NULL;
         goto out2;
     }
  out2:
index b8387611b703d08bdb5adc6713c89a240c1be7bb..bf96cf2af626b73fdae2e187fa7686f1c178394b 100644 (file)
@@ -55,6 +55,7 @@ static PyObject *pyflask_context_to_sid(PyObject *self, PyObject *args,
     xc_handle = xc_interface_open();
     if (xc_handle < 0) {
         errno = xc_handle;
+        free(buf);
         return PyErr_SetFromErrno(xc_error_obj);
     }
     
index 59a16b3ee7bf4d7659b6c02c3b4086f123bc9c0d..29a81efdb3beab02b2e71dd48690ac701c81b87e 100644 (file)
@@ -678,19 +678,22 @@ static PyObject *pyxc_get_device_group(XcObject *self,
 
     if ( rc < 0 )
     {
-      free(sdev_array); 
-      return pyxc_error_to_exception();
+        free(sdev_array); 
+        return pyxc_error_to_exception();
     }
 
     if ( !num_sdevs )
     {
-       free(sdev_array);
-       return Py_BuildValue("s", "");
+        free(sdev_array);
+        return Py_BuildValue("s", "");
     }
 
     group_str = calloc(num_sdevs, sizeof(dev_str));
     if (group_str == NULL)
+    {
+        free(sdev_array);
         return PyErr_NoMemory();
+    }
 
     for ( i = 0; i < num_sdevs; i++ )
     {