[Groonga-commit] groonga/groonga at efcf6ca [master] Fix a bug that text->number cast ignores trailing garbage

Back to archive index

Kouhei Sutou null+****@clear*****
Thu Aug 23 13:53:07 JST 2018


Kouhei Sutou	2018-08-23 13:53:07 +0900 (Thu, 23 Aug 2018)

  Revision: efcf6caaf10f2b95e9c88a0d6f90236be202ee88
  https://github.com/groonga/groonga/commit/efcf6caaf10f2b95e9c88a0d6f90236be202ee88

  Message:
    Fix a bug that text->number cast ignores trailing garbage
    
    "0garbage" should be cast error.

  Added files:
    test/command/suite/select/columns/stage/initial/invalid-value.expected
    test/command/suite/select/columns/stage/initial/invalid-value.test
  Modified files:
    lib/db.c

  Modified: lib/db.c (+6 -2)
===================================================================
--- lib/db.c    2018-08-22 18:32:32 +0900 (1339bf7d3)
+++ lib/db.c    2018-08-23 13:53:07 +0900 (2918d8927)
@@ -6422,8 +6422,12 @@ grn_obj_cast_bool(grn_ctx *ctx, grn_obj *src, grn_obj *dest,
     grn_obj buf;\
     GRN_VOID_INIT(&buf);\
     rc = grn_aton(ctx, str, str_end, &rest, &buf);\
-    if (!rc) {\
-      rc = grn_obj_cast(ctx, &buf, dest, add_record_if_not_exist);\
+    if (rc == GRN_SUCCESS) {\
+      if (rest == str_end) {\
+        rc = grn_obj_cast(ctx, &buf, dest, add_record_if_not_exist);\
+      } else {\
+        rc = GRN_INVALID_ARGUMENT;\
+      }\
     }\
     GRN_OBJ_FIN(ctx, &buf);\
   } else {\

  Added: test/command/suite/select/columns/stage/initial/invalid-value.expected (+21 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/select/columns/stage/initial/invalid-value.expected    2018-08-23 13:53:07 +0900 (2f441b765)
@@ -0,0 +1,21 @@
+table_create Items TABLE_NO_KEY
+[[0,0.0,0.0],true]
+load --table Items
+[
+{},
+{}
+]
+[[0,0.0,0.0],2]
+select Items   --columns[invalid].stage initial   --columns[invalid].type UInt32   --columns[invalid].flags COLUMN_SCALAR   --columns[invalid].value '"0garbage"'   --sort_keys _id
+[
+  [
+    [
+      -22,
+      0.0,
+      0.0
+    ],
+    "[select][column][initial][invalid] failed to apply expression to generate column values: <2147483649.invalid>: failed to cast t"
+  ]
+]
+#|e| <2147483649.invalid>: failed to cast to <UInt32>: <"0garbage">
+#|e| [select][column][initial][invalid] failed to apply expression to generate column values: <2147483649.invalid>: failed to cast to <UInt32>: <"0garbage">

  Added: test/command/suite/select/columns/stage/initial/invalid-value.test (+14 -0) 100644
===================================================================
--- /dev/null
+++ test/command/suite/select/columns/stage/initial/invalid-value.test    2018-08-23 13:53:07 +0900 (46052b418)
@@ -0,0 +1,14 @@
+table_create Items TABLE_NO_KEY
+
+load --table Items
+[
+{},
+{}
+]
+
+select Items \
+  --columns[invalid].stage initial \
+  --columns[invalid].type UInt32 \
+  --columns[invalid].flags COLUMN_SCALAR \
+  --columns[invalid].value '"0garbage"' \
+  --sort_keys _id
-------------- next part --------------
HTML����������������������������...
URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20180823/110fc6f8/attachment-0001.htm 



More information about the Groonga-commit mailing list
Back to archive index