summaryrefslogtreecommitdiff
path: root/src/pulse
diff options
context:
space:
mode:
authorKamil Rytarowski <n54@gmx.com>2015-11-20 04:20:36 +0100
committerArun Raghavan <git@arunraghavan.net>2015-12-08 08:56:07 +0530
commit93cccdee8d80905f3df79822c1682baf5d3c4c95 (patch)
treef164ffb383d403c95cf464f4a2c1794e53ae2e32 /src/pulse
parent9dd77827ad55bf2c6e58f3ce24537afb42616e8e (diff)
core, pulse, modules: Fix undefined behavior with array subscript of invalid type
From the NetBSD manual: The first argument of these functions is of type int, but only a very restricted subset of values are actually valid. The argument must either be the value of the macro EOF (which has a negative value), or must be a non-negative value within the range representable as unsigned char. Passing invalid values leads to undefined behavior. -- ctype(3)
Diffstat (limited to 'src/pulse')
-rw-r--r--src/pulse/proplist.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/pulse/proplist.c b/src/pulse/proplist.c
index 4e2901b3..d8c64044 100644
--- a/src/pulse/proplist.c
+++ b/src/pulse/proplist.c
@@ -480,7 +480,7 @@ pa_proplist *pa_proplist_from_string(const char *s) {
goto success;
else if (*p == '=')
goto fail;
- else if (!isspace(*p)) {
+ else if (!isspace((unsigned char)*p)) {
key = p;
state = KEY;
key_len = 1;
@@ -492,7 +492,7 @@ pa_proplist *pa_proplist_from_string(const char *s) {
goto fail;
else if (*p == '=')
state = VALUE_START;
- else if (isspace(*p))
+ else if (isspace((unsigned char)*p))
state = AFTER_KEY;
else
key_len++;
@@ -503,7 +503,7 @@ pa_proplist *pa_proplist_from_string(const char *s) {
goto fail;
else if (*p == '=')
state = VALUE_START;
- else if (!isspace(*p))
+ else if (!isspace((unsigned char)*p))
goto fail;
break;
@@ -523,7 +523,7 @@ pa_proplist *pa_proplist_from_string(const char *s) {
state = VALUE_DOUBLE_QUOTES;
value = p+1;
value_len = 0;
- } else if (!isspace(*p)) {
+ } else if (!isspace((unsigned char)*p)) {
state = VALUE_SIMPLE;
value = p;
value_len = 1;
@@ -531,7 +531,7 @@ pa_proplist *pa_proplist_from_string(const char *s) {
break;
case VALUE_SIMPLE:
- if (*p == 0 || isspace(*p)) {
+ if (*p == 0 || isspace((unsigned char)*p)) {
if (proplist_setn(pl, key, key_len, value, value_len) < 0)
goto fail;
@@ -610,7 +610,7 @@ pa_proplist *pa_proplist_from_string(const char *s) {
(*p >= 'A' && *p <= 'F') ||
(*p >= 'a' && *p <= 'f')) {
value_len++;
- } else if (*p == 0 || isspace(*p)) {
+ } else if (*p == 0 || isspace((unsigned char)*p)) {
if (proplist_sethex(pl, key, key_len, value, value_len) < 0)
goto fail;