diff options
| author | Jonathan Gordon <rockbox@jdgordon.info> | 2008-06-07 08:30:06 +0000 |
|---|---|---|
| committer | Jonathan Gordon <rockbox@jdgordon.info> | 2008-06-07 08:30:06 +0000 |
| commit | cbbbaac6507987619c78a4c6c4228fd4b43d9cd6 (patch) | |
| tree | 60145110997cfa7122d6bda150babfc368c041fc /apps | |
| parent | 4bbdc5c3a3c1fa0a914989a660b0c53ad024ab16 (diff) | |
| download | rockbox-cbbbaac6507987619c78a4c6c4228fd4b43d9cd6.zip rockbox-cbbbaac6507987619c78a4c6c4228fd4b43d9cd6.tar.gz rockbox-cbbbaac6507987619c78a4c6c4228fd4b43d9cd6.tar.bz2 rockbox-cbbbaac6507987619c78a4c6c4228fd4b43d9cd6.tar.xz | |
Make parse_list() a bit stricter by only allowing items to be skipped if they are explicitly marked with - e.g %V|0|0|-|-|1|-|-|
it will now error out if a - is missing and the item wasnt read properly
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17697 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/misc.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/apps/misc.c b/apps/misc.c index 51e02f6..4d7ddd5 100644 --- a/apps/misc.c +++ b/apps/misc.c @@ -1220,6 +1220,7 @@ int hex_to_rgb(const char* hex, int* color) valid_vals - if not NULL 1 is set in the bitplace if the item was read OK 0 if not read. first item is LSB, (max 32 items! ) + Stops parseing if an item is invalid unless the item == '-' sep - list separator (e.g. ',' or '|') str - string to parse, must be terminated by 0 or sep ... - pointers to store the parsed values @@ -1262,14 +1263,14 @@ const char* parse_list(const char *fmt, unsigned int *valid_vals, *s = p; while (*p && *p != sep) p++; - valid = (*s[0]!=sep); + valid = (*s[0]!='-') && (*s[1]!=sep) ; break; case 'd': /* int */ d = va_arg(ap, int*); if (!isdigit(*p)) { - if (!valid_vals) + if (!valid_vals || *p != '-') goto err; while (*p && *p != sep) p++; @@ -1290,7 +1291,7 @@ const char* parse_list(const char *fmt, unsigned int *valid_vals, if (hex_to_rgb(p, d) < 0) { - if (!valid_vals) + if (!valid_vals || *p != '-') goto err; while (*p && *p != sep) p++; @@ -1313,7 +1314,7 @@ const char* parse_list(const char *fmt, unsigned int *valid_vals, *d = *p++ - '0'; valid = true; } - else if (!valid_vals) + else if (!valid_vals || *p != '-') goto err; else { |