52 lines
1.9 KiB
Diff
52 lines
1.9 KiB
Diff
From 3ab6ec6c485b6a0b8811faa5e6166d67584001cc Mon Sep 17 00:00:00 2001
|
|
From: Luis Gerhorst <gerhorst@cs.fau.de>
|
|
Date: Mon, 27 Feb 2023 16:08:54 +0100
|
|
Subject: tools: bpftool: Remove invalid \' json escape
|
|
|
|
[ Upstream commit c679bbd611c08b0559ffae079330bc4e5574696a ]
|
|
|
|
RFC8259 ("The JavaScript Object Notation (JSON) Data Interchange
|
|
Format") only specifies \", \\, \/, \b, \f, \n, \r, and \r as valid
|
|
two-character escape sequences. This does not include \', which is not
|
|
required in JSON because it exclusively uses double quotes as string
|
|
separators.
|
|
|
|
Solidus (/) may be escaped, but does not have to. Only reverse
|
|
solidus (\), double quotes ("), and the control characters have to be
|
|
escaped. Therefore, with this fix, bpftool correctly supports all valid
|
|
two-character escape sequences (but still does not support characters
|
|
that require multi-character escape sequences).
|
|
|
|
Witout this fix, attempting to load a JSON file generated by bpftool
|
|
using Python 3.10.6's default json.load() may fail with the error
|
|
"Invalid \escape" if the file contains the invalid escaped single
|
|
quote (\').
|
|
|
|
Fixes: b66e907cfee2 ("tools: bpftool: copy JSON writer from iproute2 repository")
|
|
Signed-off-by: Luis Gerhorst <gerhorst@cs.fau.de>
|
|
Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
|
|
Reviewed-by: Quentin Monnet <quentin@isovalent.com>
|
|
Link: https://lore.kernel.org/bpf/20230227150853.16863-1-gerhorst@cs.fau.de
|
|
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
|
---
|
|
src/json_writer.c | 3 ---
|
|
1 file changed, 3 deletions(-)
|
|
|
|
diff --git a/src/json_writer.c b/src/json_writer.c
|
|
index 7fea83bedf488..bca5dd0a59e34 100644
|
|
--- a/src/json_writer.c
|
|
+++ b/src/json_writer.c
|
|
@@ -80,9 +80,6 @@ static void jsonw_puts(json_writer_t *self, const char *str)
|
|
case '"':
|
|
fputs("\\\"", self->out);
|
|
break;
|
|
- case '\'':
|
|
- fputs("\\\'", self->out);
|
|
- break;
|
|
default:
|
|
putc(*str, self->out);
|
|
}
|
|
--
|
|
cgit
|
|
|