Fix heap buffer overflow when formatting an empty string
The `jv_string_empty` did not properly null-terminate the string data,
which could lead to a heap buffer overflow. The test case of
GHSA-p7rr-28xf-3m5w (`0[""*0]`) was fixed by the commit dc849e9bb7,
but another case (`0[[]|implode]`) was still vulnerable. This commit
ensures string data is properly null-terminated, and fixes CVE-2025-48060.
This commit is contained in:
1 parent
3b00981acd
commit
c6e041699d
2 files changed
+5
No files matched your search
@@ -1148,6 +1148,7 @@ static jv jvp_string_empty_new(uint32_t length) {
|
|||||||
jvp_string* s = jvp_string_alloc(length);
|
jvp_string* s = jvp_string_alloc(length);
|
||||||
s->length_hashed = 0;
|
s->length_hashed = 0;
|
||||||
memset(s->data, 0, length);
|
memset(s->data, 0, length);
|
||||||
|
s->data[length] = 0;
|
||||||
jv r = {JVP_FLAGS_STRING, 0, 0, 0, {&s->refcnt}};
|
jv r = {JVP_FLAGS_STRING, 0, 0, 0, {&s->refcnt}};
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2362,6 +2362,10 @@ map(try implode catch .)
|
|||||||
[123,["a"],[nan]]
|
[123,["a"],[nan]]
|
||||||
["implode input must be an array","string (\"a\") can't be imploded, unicode codepoint needs to be numeric","number (null) can't be imploded, unicode codepoint needs to be numeric"]
|
["implode input must be an array","string (\"a\") can't be imploded, unicode codepoint needs to be numeric","number (null) can't be imploded, unicode codepoint needs to be numeric"]
|
||||||
|
|
||||||
|
try 0[implode] catch .
|
||||||
|
[]
|
||||||
|
"Cannot index number with string \"\""
|
||||||
|
|
||||||
# walk
|
# walk
|
||||||
walk(.)
|
walk(.)
|
||||||
{"x":0}
|
{"x":0}
|
||||||
|
|||||||
Reference in new issue
Block a user