bluetooth: Prevent aborts caused by invalid module arguments
authorJason Gerecke <killertofu@gmail.com>
Thu, 14 Jan 2016 04:27:39 +0000 (20:27 -0800)
committerArun Raghavan <git@arunraghavan.net>
Fri, 15 Jan 2016 10:50:53 +0000 (16:20 +0530)
If 'pa_modargs_new' returns a NULL, we need to be careful to not call
'pa_modargs_free' in the failure path since it requires that we pass it
a non-null argument. Also updates 'module-bluetooth-policy.c:pa__init'
to follow the standard "goto fail" pattern used everywhere else.

Signed-off-by: Jason Gerecke <killertofu@gmail.com>
src/modules/bluetooth/module-bluetooth-policy.c
src/modules/bluetooth/module-bluez5-discover.c

index fc709ec..4e51846 100644 (file)
@@ -225,7 +225,7 @@ int pa__init(pa_module *m) {
 
     if (!(ma = pa_modargs_new(m->argument, valid_modargs))) {
         pa_log_error("Failed to parse module arguments");
-        return -1;
+        goto fail;
     }
 
     m->userdata = u = pa_xnew0(struct userdata, 1);
@@ -261,7 +261,8 @@ int pa__init(pa_module *m) {
     return 0;
 
 fail:
-    pa_modargs_free(ma);
+    if (ma)
+        pa_modargs_free(ma);
     return -1;
 }
 
index 1ccc1d1..080e5d0 100644 (file)
@@ -137,7 +137,8 @@ int pa__init(pa_module *m) {
     return 0;
 
 fail:
-    pa_modargs_free(ma);
+    if (ma)
+        pa_modargs_free(ma);
     pa__done(m);
     return -1;
 }