summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Jones <pjones@redhat.com>2010-02-24 11:19:28 -0500
committerMartin Pitt <martin.pitt@ubuntu.com>2010-03-04 00:37:52 +0100
commitbaa61a879985d63f549854518ef14efd40e62e8c (patch)
tree69c7fb282c226c0ef8a4a5920c848aa24aed513f
parent9c940ee21009abb338182f5774d6ece0e9dd6eb9 (diff)
Make sure dbus_error_init() is called before LIBHAL_FREE_DBUS_ERROR()
If dbus_error_init() is not called before LIBHAL_FREE_DBUS_ERROR() is called on that error, then it is uninitialized and may segfault. This means that dbus_error_init() must be called before any "goto out" if "out:" calls LIBHAL_FREE_DBUS_ERROR(). Signed-off-by: Martin Pitt <martin.pitt@ubuntu.com>
-rw-r--r--hald/linux/probing/probe-hiddev.c3
-rw-r--r--hald/linux/probing/probe-ieee1394-unit.c3
-rw-r--r--hald/linux/probing/probe-net-bluetooth.c4
-rw-r--r--hald/linux/probing/probe-printer.c3
-rw-r--r--hald/linux/probing/probe-smbios.c3
-rw-r--r--hald/linux/probing/probe-storage.c3
-rw-r--r--hald/linux/probing/probe-video4linux.c3
-rw-r--r--hald/linux/probing/probe-volume.c3
8 files changed, 16 insertions, 9 deletions
diff --git a/hald/linux/probing/probe-hiddev.c b/hald/linux/probing/probe-hiddev.c
index 45d2084f..bffc040e 100644
--- a/hald/linux/probing/probe-hiddev.c
+++ b/hald/linux/probing/probe-hiddev.c
@@ -57,11 +57,12 @@ main (int argc, char *argv[])
/* assume failure */
ret = 1;
+ dbus_error_init (&error);
+
udi = getenv ("UDI");
if (udi == NULL)
goto out;
- dbus_error_init (&error);
if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
goto out;
diff --git a/hald/linux/probing/probe-ieee1394-unit.c b/hald/linux/probing/probe-ieee1394-unit.c
index 70b0f863..aaa92e24 100644
--- a/hald/linux/probing/probe-ieee1394-unit.c
+++ b/hald/linux/probing/probe-ieee1394-unit.c
@@ -388,6 +388,8 @@ int main (int argc, char *argv[])
setup_logger ();
+ dbus_error_init (&error);
+
udi = getenv ("UDI");
if (udi == NULL)
goto out;
@@ -396,7 +398,6 @@ int main (int argc, char *argv[])
if (ieee1394_udi == NULL)
goto out;
- dbus_error_init (&error);
if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
goto out;
diff --git a/hald/linux/probing/probe-net-bluetooth.c b/hald/linux/probing/probe-net-bluetooth.c
index 0b1b912c..e911eea1 100644
--- a/hald/linux/probing/probe-net-bluetooth.c
+++ b/hald/linux/probing/probe-net-bluetooth.c
@@ -141,6 +141,8 @@ main (int argc, char *argv[])
DBusMessage *reply = NULL;
DBusError error;
+ dbus_error_init (&error);
+
udi = getenv ("UDI");
if (udi == NULL)
goto out;
@@ -151,8 +153,6 @@ main (int argc, char *argv[])
HAL_INFO (("Investigating '%s'", iface));
- dbus_error_init (&error);
-
if ((conn = dbus_bus_get (DBUS_BUS_SYSTEM, &error)) == NULL)
goto out;
diff --git a/hald/linux/probing/probe-printer.c b/hald/linux/probing/probe-printer.c
index 91ed7bcd..7c6d1c61 100644
--- a/hald/linux/probing/probe-printer.c
+++ b/hald/linux/probing/probe-printer.c
@@ -66,6 +66,8 @@ main (int argc, char *argv[])
ret = 1;
setup_logger ();
+
+ dbus_error_init (&error);
udi = getenv ("UDI");
if (udi == NULL) {
@@ -73,7 +75,6 @@ main (int argc, char *argv[])
goto out;
}
- dbus_error_init (&error);
if ((ctx = libhal_ctx_init_direct (&error)) == NULL) {
HAL_ERROR (("ctx init failed"));
goto out;
diff --git a/hald/linux/probing/probe-smbios.c b/hald/linux/probing/probe-smbios.c
index 0bc9689b..15c0d4f2 100644
--- a/hald/linux/probing/probe-smbios.c
+++ b/hald/linux/probing/probe-smbios.c
@@ -129,6 +129,8 @@ main (int argc, char *argv[])
ret = 1;
setup_logger ();
+
+ dbus_error_init (&error);
udi = getenv ("UDI");
if (udi == NULL) {
@@ -136,7 +138,6 @@ main (int argc, char *argv[])
goto out;
}
- dbus_error_init (&error);
if ((ctx = libhal_ctx_init_direct (&error)) == NULL) {
HAL_ERROR (("ctx init failed"));
goto out;
diff --git a/hald/linux/probing/probe-storage.c b/hald/linux/probing/probe-storage.c
index 824a82ee..dd524ca4 100644
--- a/hald/linux/probing/probe-storage.c
+++ b/hald/linux/probing/probe-storage.c
@@ -109,6 +109,8 @@ main (int argc, char *argv[])
/* assume failure */
ret = 1;
+ dbus_error_init (&error);
+
if ((udi = getenv ("UDI")) == NULL)
goto out;
if ((device_file = getenv ("HAL_PROP_BLOCK_DEVICE")) == NULL)
@@ -127,7 +129,6 @@ main (int argc, char *argv[])
else
only_check_for_fs = FALSE;
- dbus_error_init (&error);
if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
goto out;
diff --git a/hald/linux/probing/probe-video4linux.c b/hald/linux/probing/probe-video4linux.c
index cf913c0f..7bc13e84 100644
--- a/hald/linux/probing/probe-video4linux.c
+++ b/hald/linux/probing/probe-video4linux.c
@@ -58,6 +58,8 @@ main (int argc, char *argv[])
setup_logger ();
+ dbus_error_init (&error);
+
device_file = getenv ("HAL_PROP_VIDEO4LINUX_DEVICE");
if (device_file == NULL)
goto out;
@@ -66,7 +68,6 @@ main (int argc, char *argv[])
if (udi == NULL)
goto out;
- dbus_error_init (&error);
ctx = libhal_ctx_init_direct (&error);
if (ctx == NULL)
goto out;
diff --git a/hald/linux/probing/probe-volume.c b/hald/linux/probing/probe-volume.c
index 0de1b918..7268fffd 100644
--- a/hald/linux/probing/probe-volume.c
+++ b/hald/linux/probing/probe-volume.c
@@ -318,6 +318,8 @@ main (int argc, char *argv[])
/* assume failure */
ret = 1;
+ dbus_error_init (&error);
+
if ((udi = getenv ("UDI")) == NULL)
goto out;
if ((device_file = getenv ("HAL_PROP_BLOCK_DEVICE")) == NULL)
@@ -346,7 +348,6 @@ main (int argc, char *argv[])
fsusage = getenv ("HAL_PROP_VOLUME_FSUSAGE");
- dbus_error_init (&error);
if ((ctx = libhal_ctx_init_direct (&error)) == NULL)
goto out;