diff options
author | Kamil Rytarowski <n54@gmx.com> | 2015-11-20 04:20:36 +0100 |
---|---|---|
committer | Arun Raghavan <git@arunraghavan.net> | 2015-12-08 08:56:07 +0530 |
commit | 93cccdee8d80905f3df79822c1682baf5d3c4c95 (patch) | |
tree | f164ffb383d403c95cf464f4a2c1794e53ae2e32 /src/pulse | |
parent | 9dd77827ad55bf2c6e58f3ce24537afb42616e8e (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.c | 12 |
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; |