[pulseaudio-commits] src/modules

Colin Guthrie colin at kemper.freedesktop.org
Thu Aug 4 09:23:50 PDT 2011


 src/modules/alsa/alsa-mixer.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

New commits:
commit 5bfcb5d8a09bf5c726d4aea6fb04533007c24143
Author: David Henningsson <david.henningsson at canonical.com>
Date:   Thu Aug 4 11:13:37 2011 +0200

    Fix crash in path subset elimination
    
    As reported in http://kpaste.net/04f1f3f
    it is possible to call enumeration_is_subset with null pointers.
    Handle that case instead of crashing. (It is also possible that
    Tanuk's pending element_is_subset patch solves the issue, but this
    nevertheless gives some extra security.)
    
    Signed-off-by: David Henningsson <david.henningsson at canonical.com>

diff --git a/src/modules/alsa/alsa-mixer.c b/src/modules/alsa/alsa-mixer.c
index f6a2a20..4542ac3 100644
--- a/src/modules/alsa/alsa-mixer.c
+++ b/src/modules/alsa/alsa-mixer.c
@@ -2890,8 +2890,8 @@ static pa_bool_t options_have_option(pa_alsa_option *options, const char *alsa_n
 static pa_bool_t enumeration_is_subset(pa_alsa_option *a_options, pa_alsa_option *b_options) {
     pa_alsa_option *oa, *ob;
 
-    pa_assert(a_options);
-    pa_assert(b_options);
+    if (!a_options) return TRUE;
+    if (!b_options) return FALSE;
 
     /* If there is an option A offers that B does not, then A is not a subset of B. */
     PA_LLIST_FOREACH(oa, a_options) {
@@ -3005,6 +3005,8 @@ static pa_bool_t element_is_subset(pa_alsa_element *a, pa_alsa_element *b, snd_m
     }
 
     if (a->enumeration_use != PA_ALSA_ENUMERATION_IGNORE) {
+        if (b->enumeration_use == PA_ALSA_ENUMERATION_IGNORE)
+            return FALSE;
         if (!enumeration_is_subset(a->options, b->options))
             return FALSE;
     }



More information about the pulseaudio-commits mailing list