diff options
author | Gary E. Miller <gem@rellim.com> | 2018-06-15 11:30:04 -0700 |
---|---|---|
committer | Gary E. Miller <gem@rellim.com> | 2018-06-15 11:30:04 -0700 |
commit | a399e85c1201400e281f2c1dc29dde21c29b0088 (patch) | |
tree | 4fb7e0777f29d516844e493325e17cbe4cc41dc8 /json.c | |
parent | 909162bf4df662902ebeb3b7718e84c04e097913 (diff) | |
download | gpsd-a399e85c1201400e281f2c1dc29dde21c29b0088.tar.gz |
json.c: ECMA-404 says JSON \u must have 4 hex digits
ECMA-404 says \u generates UNICODE, but json.c limits it to latin1 (0
to 0xff).
Diffstat (limited to 'json.c')
-rw-r--r-- | json.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -403,10 +403,11 @@ static int json_internal_read_object(const char *cp, uescape[n] = *cp++; uescape[n] = '\0'; /* terminate */ --cp; - if (1 != sscanf(uescape, "%4x", &u)) { + /* ECMA-404 says JSON \u must have 4 hex digits */ + if ((4 != n) || (1 != sscanf(uescape, "%4x", &u))) { return JSON_ERR_BADSTRING; } - *pval++ = (unsigned char)u; /* will truncate values above 0xff */ + *pval++ = (unsigned char)u; /* truncate values above 0xff */ break; default: /* handles double quote and solidus */ *pval++ = *cp; |