[pulseaudio-commits] [Git][pulseaudio/pulseaudio][master] backend-native: Fix parsing comma-delimited response

PulseAudio Marge Bot (@pulseaudio-merge-bot) gitlab at gitlab.freedesktop.org
Fri Jan 20 20:07:22 UTC 2023



PulseAudio Marge Bot pushed to branch master at PulseAudio / pulseaudio


Commits:
33129c88 by Igor V. Kovalenko at 2023-01-19T21:38:05+03:00
backend-native: Fix parsing comma-delimited response

Incoming RFCOMM string has extra end-of-command terminating character which
breaks both AT+BIA= and AT+BAC= parsers which only expect a comma.

This leads to error parsing last element of response in both cases and could
prevent detecting mSBC availability if mSBC codec id comes last, e.g. AT+BIA=1,2

Fix this by additionally checking for delimiters in both parsers.

Fixes: 3c63f8e6d ("backend-native: Fix stack corruption reading RFCOMM AT+BIA= response")
Part-of: <https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/merge_requests/768>

- - - - -


1 changed file:

- src/modules/bluetooth/backend-native.c


Changes:

=====================================
src/modules/bluetooth/backend-native.c
=====================================
@@ -639,7 +639,7 @@ static bool hfp_rfcomm_handle(int fd, pa_bluetooth_transport *t, const char *buf
         /* Indicators start with index 1 and follow the order of the AT+CIND=? response */
 
         str = pa_xstrdup(buf + 7);
-        for (indicator = 1; (r = pa_split_in_place(str, ",", &len, &state)); indicator++) {
+        for (indicator = 1; (r = pa_split_in_place(str, ",\r\n", &len, &state)); indicator++) {
             /* Ignore updates to mandatory indicators which are always ON */
             if (indicator == CIND_CALL_INDICATOR
                 || indicator == CIND_CALL_SETUP_INDICATOR
@@ -669,7 +669,7 @@ static bool hfp_rfcomm_handle(int fd, pa_bluetooth_transport *t, const char *buf
 
         /* check if codec id 2 (mSBC) is in the list of supported codecs */
         str = pa_xstrdup(buf + 7);
-        while ((r = pa_split_in_place(str, ",", &len, &state))) {
+        while ((r = pa_split_in_place(str, ",\r\n", &len, &state))) {
             if (len == 1 && r[0] == '2') {
                 c->support_msbc = true;
                 break;



View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/commit/33129c88dc7a8d18b7f0aa8ef563c50a7904d00c

-- 
View it on GitLab: https://gitlab.freedesktop.org/pulseaudio/pulseaudio/-/commit/33129c88dc7a8d18b7f0aa8ef563c50a7904d00c
You're receiving this email because of your account on gitlab.freedesktop.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/pulseaudio-commits/attachments/20230120/c9a089aa/attachment-0001.htm>


More information about the pulseaudio-commits mailing list