[pulseaudio-discuss] [PATCH v2] bluetooth: Prevent aborts caused by invalid module arguments

Jason Gerecke killertofu at gmail.com
Wed Jan 13 20:27:39 PST 2016


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 at gmail.com>
---
 src/modules/bluetooth/module-bluetooth-policy.c | 5 +++--
 src/modules/bluetooth/module-bluez5-discover.c  | 3 ++-
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/src/modules/bluetooth/module-bluetooth-policy.c b/src/modules/bluetooth/module-bluetooth-policy.c
index fc709ec..4e51846 100644
--- a/src/modules/bluetooth/module-bluetooth-policy.c
+++ b/src/modules/bluetooth/module-bluetooth-policy.c
@@ -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;
 }
 
diff --git a/src/modules/bluetooth/module-bluez5-discover.c b/src/modules/bluetooth/module-bluez5-discover.c
index 1ccc1d1..080e5d0 100644
--- a/src/modules/bluetooth/module-bluez5-discover.c
+++ b/src/modules/bluetooth/module-bluez5-discover.c
@@ -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;
 }
-- 
2.6.4



More information about the pulseaudio-discuss mailing list