Re: [Qemu-devel] [PATCH v2 1/3] add some tests for invalid JSON

2010-05-25 Thread Paolo Bonzini

On 05/24/2010 10:17 PM, Anthony Liguori wrote:

On 05/24/2010 02:39 AM, Paolo Bonzini wrote:

Signed-off-by: Paolo Bonzinipbonz...@redhat.com


I think this series conflicts a bit with Luiz's series which I just
pushed. Could you rebase against the latest?


You didn't apply this one yet, at least I don't see it on qemu.git

commit e546343ee0f3f904529d32c1a9a60f5baa181852
Author: Luiz Capitulino lcapitul...@redhat.com
Date:   Wed May 19 18:15:32 2010 -0300

json-lexer: Drop 'buf'

QString supports adding a single char, 'buf' is unneeded.

Signed-off-by: Luiz Capitulino lcapitul...@redhat.com

I based my series on top of Luiz's, so it should apply.  The above is 
the only commit that is actually required.  I can ping the series once 
Luiz's patches are applied, so you can disregard it in the meanwhile.


Paolo



Re: [Qemu-devel] [PATCH v2 1/3] add some tests for invalid JSON

2010-05-25 Thread Anthony Liguori

On 05/25/2010 02:28 AM, Paolo Bonzini wrote:

On 05/24/2010 10:17 PM, Anthony Liguori wrote:

On 05/24/2010 02:39 AM, Paolo Bonzini wrote:

Signed-off-by: Paolo Bonzinipbonz...@redhat.com


I think this series conflicts a bit with Luiz's series which I just
pushed. Could you rebase against the latest?


You didn't apply this one yet, at least I don't see it on qemu.git

commit e546343ee0f3f904529d32c1a9a60f5baa181852
Author: Luiz Capitulino lcapitul...@redhat.com
Date:   Wed May 19 18:15:32 2010 -0300

json-lexer: Drop 'buf'

QString supports adding a single char, 'buf' is unneeded.

Signed-off-by: Luiz Capitulino lcapitul...@redhat.com

I based my series on top of Luiz's, so it should apply.


Yeah, I confused myself into thinking that Luiz's series was more 
contentious than it is.  Nevermind, your patches are fine on top of his.


Regards,

Anthony Liguori

The above is the only commit that is actually required.  I can ping 
the series once Luiz's patches are applied, so you can disregard it in 
the meanwhile.


Paolo





[Qemu-devel] [PATCH v2 1/3] add some tests for invalid JSON

2010-05-24 Thread Paolo Bonzini
Signed-off-by: Paolo Bonzini pbonz...@redhat.com
---
 check-qjson.c |   98 -
 1 files changed, 97 insertions(+), 1 deletions(-)

diff --git a/check-qjson.c b/check-qjson.c
index 109e777..a04e334 100644
--- a/check-qjson.c
+++ b/check-qjson.c
@@ -628,11 +628,90 @@ START_TEST(simple_varargs)
 }
 END_TEST
 
+START_TEST(empty_input)
+{
+QObject *obj = qobject_from_json();
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_string)
+{
+QObject *obj = qobject_from_json(\abc);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_sq_string)
+{
+QObject *obj = qobject_from_json('abc);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_escape)
+{
+QObject *obj = qobject_from_json(\abc\\\);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_array)
+{
+QObject *obj = qobject_from_json([32);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_array_comma)
+{
+QObject *obj = qobject_from_json([32,);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(invalid_array_comma)
+{
+QObject *obj = qobject_from_json([32,});
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_dict)
+{
+QObject *obj = qobject_from_json({'abc':32);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_dict_comma)
+{
+QObject *obj = qobject_from_json({'abc':32,);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+#if 0
+START_TEST(invalid_dict_comma)
+{
+QObject *obj = qobject_from_json({'abc':32,});
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_literal)
+{
+QObject *obj = qobject_from_json(nul);
+fail_unless(obj == NULL);
+}
+END_TEST
+#endif
+
 static Suite *qjson_suite(void)
 {
 Suite *suite;
 TCase *string_literals, *number_literals, *keyword_literals;
-TCase *dicts, *lists, *whitespace, *varargs;
+TCase *dicts, *lists, *whitespace, *varargs, *errors;
 
 string_literals = tcase_create(String Literals);
 tcase_add_test(string_literals, simple_string);
@@ -658,6 +737,22 @@ static Suite *qjson_suite(void)
 varargs = tcase_create(Varargs);
 tcase_add_test(varargs, simple_varargs);
 
+errors = tcase_create(Invalid JSON);
+tcase_add_test(errors, empty_input);
+tcase_add_test(errors, unterminated_string);
+tcase_add_test(errors, unterminated_escape);
+tcase_add_test(errors, unterminated_sq_string);
+tcase_add_test(errors, unterminated_array);
+tcase_add_test(errors, unterminated_array_comma);
+tcase_add_test(errors, invalid_array_comma);
+tcase_add_test(errors, unterminated_dict);
+tcase_add_test(errors, unterminated_dict_comma);
+#if 0
+/* FIXME: this print parse error messages on stderr.  */
+tcase_add_test(errors, invalid_dict_comma);
+tcase_add_test(errors, unterminated_literal);
+#endif
+
 suite = suite_create(QJSON test-suite);
 suite_add_tcase(suite, string_literals);
 suite_add_tcase(suite, number_literals);
@@ -666,6 +761,7 @@ static Suite *qjson_suite(void)
 suite_add_tcase(suite, lists);
 suite_add_tcase(suite, whitespace);
 suite_add_tcase(suite, varargs);
+suite_add_tcase(suite, errors);
 
 return suite;
 }
-- 
1.6.6.1





Re: [Qemu-devel] [PATCH v2 1/3] add some tests for invalid JSON

2010-05-24 Thread Anthony Liguori

On 05/24/2010 02:39 AM, Paolo Bonzini wrote:

Signed-off-by: Paolo Bonzinipbonz...@redhat.com
   


I think this series conflicts a bit with Luiz's series which I just 
pushed.  Could you rebase against the latest?


Regards,

Anthony Liguori


---
  check-qjson.c |   98 -
  1 files changed, 97 insertions(+), 1 deletions(-)

diff --git a/check-qjson.c b/check-qjson.c
index 109e777..a04e334 100644
--- a/check-qjson.c
+++ b/check-qjson.c
@@ -628,11 +628,90 @@ START_TEST(simple_varargs)
  }
  END_TEST

+START_TEST(empty_input)
+{
+QObject *obj = qobject_from_json();
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_string)
+{
+QObject *obj = qobject_from_json(\abc);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_sq_string)
+{
+QObject *obj = qobject_from_json('abc);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_escape)
+{
+QObject *obj = qobject_from_json(\abc\\\);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_array)
+{
+QObject *obj = qobject_from_json([32);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_array_comma)
+{
+QObject *obj = qobject_from_json([32,);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(invalid_array_comma)
+{
+QObject *obj = qobject_from_json([32,});
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_dict)
+{
+QObject *obj = qobject_from_json({'abc':32);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_dict_comma)
+{
+QObject *obj = qobject_from_json({'abc':32,);
+fail_unless(obj == NULL);
+}
+END_TEST
+
+#if 0
+START_TEST(invalid_dict_comma)
+{
+QObject *obj = qobject_from_json({'abc':32,});
+fail_unless(obj == NULL);
+}
+END_TEST
+
+START_TEST(unterminated_literal)
+{
+QObject *obj = qobject_from_json(nul);
+fail_unless(obj == NULL);
+}
+END_TEST
+#endif
+
  static Suite *qjson_suite(void)
  {
  Suite *suite;
  TCase *string_literals, *number_literals, *keyword_literals;
-TCase *dicts, *lists, *whitespace, *varargs;
+TCase *dicts, *lists, *whitespace, *varargs, *errors;

  string_literals = tcase_create(String Literals);
  tcase_add_test(string_literals, simple_string);
@@ -658,6 +737,22 @@ static Suite *qjson_suite(void)
  varargs = tcase_create(Varargs);
  tcase_add_test(varargs, simple_varargs);

+errors = tcase_create(Invalid JSON);
+tcase_add_test(errors, empty_input);
+tcase_add_test(errors, unterminated_string);
+tcase_add_test(errors, unterminated_escape);
+tcase_add_test(errors, unterminated_sq_string);
+tcase_add_test(errors, unterminated_array);
+tcase_add_test(errors, unterminated_array_comma);
+tcase_add_test(errors, invalid_array_comma);
+tcase_add_test(errors, unterminated_dict);
+tcase_add_test(errors, unterminated_dict_comma);
+#if 0
+/* FIXME: this print parse error messages on stderr.  */
+tcase_add_test(errors, invalid_dict_comma);
+tcase_add_test(errors, unterminated_literal);
+#endif
+
  suite = suite_create(QJSON test-suite);
  suite_add_tcase(suite, string_literals);
  suite_add_tcase(suite, number_literals);
@@ -666,6 +761,7 @@ static Suite *qjson_suite(void)
  suite_add_tcase(suite, lists);
  suite_add_tcase(suite, whitespace);
  suite_add_tcase(suite, varargs);
+suite_add_tcase(suite, errors);

  return suite;
  }