From baa61a879985d63f549854518ef14efd40e62e8c Mon Sep 17 00:00:00 2001 From: Peter Jones Date: Wed, 24 Feb 2010 11:19:28 -0500 Subject: 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 --- hald/linux/probing/probe-hiddev.c | 3 ++- hald/linux/probing/probe-ieee1394-unit.c | 3 ++- hald/linux/probing/probe-net-bluetooth.c | 4 ++-- hald/linux/probing/probe-printer.c | 3 ++- hald/linux/probing/probe-smbios.c | 3 ++- hald/linux/probing/probe-storage.c | 3 ++- hald/linux/probing/probe-video4linux.c | 3 ++- hald/linux/probing/probe-volume.c | 3 ++- 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; -- cgit v1.2.3