[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: A brief look at deprecating our JSON extensions over RFC 8259
From: |
Markus Armbruster |
Subject: |
Re: A brief look at deprecating our JSON extensions over RFC 8259 |
Date: |
Tue, 23 Feb 2021 13:34:56 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) |
Paolo Bonzini <pbonzini@redhat.com> writes:
> On 23/02/21 10:06, Markus Armbruster wrote:
>>> Markus, did you rebuild the qtests after disabling single-quoted
>>> strings? "make check-qtest-x86_64" would have rebuilt them, but I'm
>>> confused by the results.
>> I ran "make check" and looked at the failures:
>> Still confused?
>
> Yes. What's the patch that you used to disable the single quotes, and
> why didn't the patched parser choke on
>
> response = qmp("{ 'execute': 'qom-get', 'arguments': { 'path': %s, "
> "'property': 'temperature' } }", id);
>
> ?
My bad! I neglected to mention that I tied "disable single-quoted
strings" to "interpolation is off" for my experiment. This is a lazy,
half-assed approximation of "internal interface".
Here's the experimental patch.
commit 57138b9d4188dd8ce1814237fe53f7131bbb3f45
Author: Markus Armbruster <armbru@redhat.com>
Date: Mon Feb 22 17:04:10 2021 +0100
qobject: Tie single quote extension to interpolation WIP
This makes several tests fail or hang. Some are hacked up.
diff --git a/qobject/json-parser.c b/qobject/json-parser.c
index 008b326fb8..c1ddc65d96 100644
--- a/qobject/json-parser.c
+++ b/qobject/json-parser.c
@@ -150,9 +150,6 @@ static QString *parse_string(JSONParserContext *ctxt,
JSONToken *token)
case '"':
g_string_append_c(str, '"');
break;
- case '\'':
- g_string_append_c(str, '\'');
- break;
case '\\':
g_string_append_c(str, '\\');
break;
@@ -201,6 +198,12 @@ static QString *parse_string(JSONParserContext *ctxt,
JSONToken *token)
}
g_string_append(str, utf8_buf);
break;
+ case '\'':
+ if (ctxt->ap) {
+ g_string_append_c(str, '\'');
+ break;
+ }
+ /* fall through */
default:
parse_error(ctxt, token, "invalid escape sequence in string");
goto out;
diff --git a/qobject/json-streamer.c b/qobject/json-streamer.c
index b93d97b995..3d4d3b484e 100644
--- a/qobject/json-streamer.c
+++ b/qobject/json-streamer.c
@@ -49,6 +49,11 @@ void json_message_process_token(JSONLexer *lexer, GString
*input,
case JSON_RSQUARE:
parser->bracket_count--;
break;
+ case JSON_STRING:
+ if (input->str[0] == '\"' || parser->ap) {
+ break;
+ }
+ /* fall through */
case JSON_ERROR:
error_setg(&err, "JSON parse error, stray '%s'", input->str);
goto out_emit;
- Re: A brief look at deprecating our JSON extensions over RFC 8259, (continued)
- Re: A brief look at deprecating our JSON extensions over RFC 8259, Liviu Ionescu, 2021/02/22
- Re: A brief look at deprecating our JSON extensions over RFC 8259, Paolo Bonzini, 2021/02/22
- Re: A brief look at deprecating our JSON extensions over RFC 8259, Daniel P . Berrangé, 2021/02/22
- Re: A brief look at deprecating our JSON extensions over RFC 8259, Paolo Bonzini, 2021/02/22
- Re: A brief look at deprecating our JSON extensions over RFC 8259, Markus Armbruster, 2021/02/23
- Re: A brief look at deprecating our JSON extensions over RFC 8259, Markus Armbruster, 2021/02/23
- Re: A brief look at deprecating our JSON extensions over RFC 8259, Peter Maydell, 2021/02/23
- Re: A brief look at deprecating our JSON extensions over RFC 8259, Markus Armbruster, 2021/02/23
- Re: A brief look at deprecating our JSON extensions over RFC 8259, Markus Armbruster, 2021/02/23
- Re: A brief look at deprecating our JSON extensions over RFC 8259, Paolo Bonzini, 2021/02/23
- Re: A brief look at deprecating our JSON extensions over RFC 8259,
Markus Armbruster <=
Re: A brief look at deprecating our JSON extensions over RFC 8259, Paolo Bonzini, 2021/02/22