Thanks for the review. I applied this to master, branch-2.{0,1,2,3}, and branch-1.{4,9,11}.
On Wed, Jun 25, 2014 at 11:05:56AM -0700, Alex Wang wrote: > Looks good to me, > > Acked-by: Alex Wang <al...@nicira.com> > > Thx, > > > On Tue, Jun 24, 2014 at 5:06 PM, Ben Pfaff <b...@nicira.com> wrote: > > > json_string_unescape() flagged a backslash at the end of a string as an > > error, but of course "\\" is a valid string. This fixes the problem. > > > > VMware-BZ: #1275208 > > Reported-by: Michael Hu <m...@nicira.com> > > Signed-off-by: Ben Pfaff <b...@nicira.com> > > --- > > lib/json.c | 14 +++++++++----- > > tests/json.at | 7 +++++++ > > 2 files changed, 16 insertions(+), 5 deletions(-) > > > > diff --git a/lib/json.c b/lib/json.c > > index 58b248a..167c40c 100644 > > --- a/lib/json.c > > +++ b/lib/json.c > > @@ -1,5 +1,5 @@ > > /* > > - * Copyright (c) 2009, 2010, 2011, 2012 Nicira, Inc. > > + * Copyright (c) 2009, 2010, 2011, 2012, 2014 Nicira, Inc. > > * > > * Licensed under the Apache License, Version 2.0 (the "License"); > > * you may not use this file except in compliance with the License. > > @@ -812,10 +812,6 @@ json_string_unescape(const char *in, size_t in_len, > > char **outp) > > > > ds_init(&out); > > ds_reserve(&out, in_len); > > - if (in_len > 0 && in[in_len - 1] == '\\') { > > - ds_put_cstr(&out, "quoted string may not end with backslash"); > > - goto exit; > > - } > > while (in < end) { > > if (*in == '"') { > > ds_clear(&out); > > @@ -828,6 +824,14 @@ json_string_unescape(const char *in, size_t in_len, > > char **outp) > > } > > > > in++; > > + if (in >= end) { > > + /* The JSON parser will never trigger this message, because > > its > > + * lexer will never pass in a string that ends in a single > > + * backslash, but json_string_unescape() has other callers > > that > > + * are not as careful.*/ > > + ds_put_cstr(&out, "quoted string may not end with backslash"); > > + goto exit; > > + } > > switch (*in++) { > > case '"': case '\\': case '/': > > ds_put_char(&out, in[-1]); > > diff --git a/tests/json.at b/tests/json.at > > index 86ae5fa..8846ac9 100644 > > --- a/tests/json.at > > +++ b/tests/json.at > > @@ -120,6 +120,13 @@ JSON_CHECK_NEGATIVE([surrogatess must paired > > properly], > > JSON_CHECK_NEGATIVE([null bytes not allowed], > > [[["\u0000"]]], > > [error: null bytes not supported in quoted strings]) > > +dnl Check for regression against a prior bug. > > +JSON_CHECK_POSITIVE([properly quoted backslash at end of string], > > + [[["\\"]]], > > + [[["\\"]]]) > > +JSON_CHECK_NEGATIVE([stray backslash at end of string], > > + [[["abcd\"]]], > > + [error: unexpected end of input in quoted string]) > > > > AT_SETUP([end of input in quoted string - C]) > > AT_KEYWORDS([json negative]) > > -- > > 1.7.10.4 > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev > > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev