[LTP] [PATCH 10/15] ujson: reader: Parse escape sequences in object IDs
Andrea Cervesato
andrea.cervesato@suse.de
Mon Oct 5 15:25:38 CEST 2026
From: Andrea Cervesato <andrea.cervesato@suse.com>
copy_id_str() copied characters verbatim without handling escape
sequences, which caused escaped quotes \" to prematurely terminate
the key and left other escape sequences such as \uXXXX unparsed.
Reuse copy_str() to parse object ID strings with full escape support.
As a side effect, too long and unterminated IDs now report the generic
copy_str() errors ("String buffer too short!", "Unterminated string")
instead of the ID-specific ones.
Fixes: c50a0e0751c8 ("libs: Vendor ujson library")
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
libs/ujson/ujson_reader.c | 24 +++---------------------
1 file changed, 3 insertions(+), 21 deletions(-)
diff --git a/libs/ujson/ujson_reader.c b/libs/ujson/ujson_reader.c
index b73a31b8f..f4335407a 100644
--- a/libs/ujson/ujson_reader.c
+++ b/libs/ujson/ujson_reader.c
@@ -256,32 +256,14 @@ static int copy_str(ujson_reader *buf, char *str, size_t len)
static int copy_id_str(ujson_reader *buf, char *str, size_t len)
{
- size_t pos = 0;
-
if (eatws(buf))
goto err0;
- if (!eatb(buf, '"'))
+ if (peekb(buf) != '"')
goto err0;
- for (;;) {
- if (buf_empty(buf)) {
- ujson_err(buf, "Unterminated ID string");
- return 1;
- }
-
- if (eatb(buf, '"')) {
- str[pos] = 0;
- break;
- }
-
- if (pos >= len-1) {
- ujson_err(buf, "ID string too long");
- return 1;
- }
-
- str[pos++] = getb(buf);
- }
+ if (copy_str(buf, str, len))
+ return 1;
if (eatws(buf))
goto err1;
--
2.51.0
More information about the ltp
mailing list