Changeset: d5524a5f35f6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/d5524a5f35f6
Modified Files:
ctest/tools/monetdbe/example_append_raw.c
tools/monetdbe/monetdbe.c
Branch: Jul2021
Log Message:
Validate UTF-8 strings on MonetDBe append function
diffs (34 lines):
diff --git a/ctest/tools/monetdbe/example_append_raw.c
b/ctest/tools/monetdbe/example_append_raw.c
--- a/ctest/tools/monetdbe/example_append_raw.c
+++ b/ctest/tools/monetdbe/example_append_raw.c
@@ -74,6 +74,13 @@ main(void)
if ((err = monetdbe_append(mdbe, "sys", "test", (monetdbe_column**)
&dcol, 6)) != NULL)
error(err)
+ // str with wrong utf8
+ char* dstr2[2] = { "\xc3\x28", "\xe2\x28\xa1" };
+ monetdbe_column col12 = { .type = monetdbe_str, .data = &dstr2, .count
= 2 };
+ monetdbe_column* dcol2[6] = { &col0, &col12, &col2, &col3, &col4, &col5
};
+ if ((err = monetdbe_append(mdbe, "sys", "test", (monetdbe_column**)
&dcol2, 6)) == NULL)
+ error("Invalid UTF-8 string expected")
+
if ((err = monetdbe_query(mdbe, "SELECT * FROM test; ", &result, NULL))
!= NULL)
error(err)
fprintf(stdout, "Query result after append with %zu cols and %"PRId64"
rows\n", result->ncols, result->nrows);
diff --git a/tools/monetdbe/monetdbe.c b/tools/monetdbe/monetdbe.c
--- a/tools/monetdbe/monetdbe.c
+++ b/tools/monetdbe/monetdbe.c
@@ -2211,8 +2211,12 @@ remote_cleanup:
char **d = (char**)v;
for (size_t j=0; j<cnt; j++) {
- if (!d[j])
+ if (!d[j]) {
d[j] = (char*) nil;
+ } else if (!checkUTF8(d[j])) {
+ mdbe->msg = createException(SQL,
"monetdbe.monetdbe_append", "Incorrectly encoded UTF-8");
+ goto cleanup;
+ }
}
if (store->storage_api.append_col(m->session->tr, c,
offset, pos, d, cnt, mtype) != 0) {
mdbe->msg = createException(SQL,
"monetdbe.monetdbe_append", "Cannot append values");
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list