Skip to content

Commit

Permalink
Don't advance our end pointer until we've checked we have enough buff…
Browse files Browse the repository at this point in the history
…er left and have peeked ahead to see that a unicode escape is approaching.

Thanks @kivikakk for helping me track down the actual bug here!

Fixes: CVE-2017-16516
Origin: brianmario/yajl-ruby@a8ca8f4
Bug: lloyd/yajl#248
Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1040036
  • Loading branch information
brianmario authored and reinerh committed Sep 16, 2023
1 parent c71ba65 commit b3424fc
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/cdogs/yajl/yajl_encode.c
Original file line number Diff line number Diff line change
Expand Up @@ -139,8 +139,8 @@ void yajl_string_decode(yajl_buf buf, const unsigned char * str,
end+=3;
/* check if this is a surrogate */
if ((codepoint & 0xFC00) == 0xD800) {
end++;
if (str[end] == '\\' && str[end + 1] == 'u') {
if (end + 2 < len && str[end + 1] == '\\' && str[end + 2] == 'u') {
end++;
unsigned int surrogate = 0;
hexToDigit(&surrogate, str + end + 2);
codepoint =
Expand Down

0 comments on commit b3424fc

Please sign in to comment.