Hi everyone !

TL;DR:
with sanitizer
in func columnName (l.82210)
calling xFunc(l.82235) trigger a cfi_check (and then ABORT)

Fix to do :
change prototype of sqlite3_value_text to let him return a `void *`

FULL Description:
I am using sqlite3.c in android system (not in NDK). I compile android with
userdebug option that enable some sanitize option.
At the first sql request (a CREATE TABLE FYI) i always have a ABORT on
columnName function.
After investigation, cfi(control flow integrity) is trigger because xfunc
is the following type : `const void *(*xFunc)(Mem*)`
but the callback given in parameters is the following type: `const unsigned
char *sqlite3_value_text(sqlite3_value *pVal)`.

I fix it by doing following changes:
6089c6089
< SQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value*);
---
> SQLITE_API const void *sqlite3_value_text(sqlite3_value*);
81305,81306c81305,81306
< SQLITE_API const unsigned char *sqlite3_value_text(sqlite3_value *pVal){
<   return (const unsigned char *)sqlite3ValueText(pVal, SQLITE_UTF8);
---
> SQLITE_API const void *sqlite3_value_text(sqlite3_value *pVal){
>   return sqlite3ValueText(pVal, SQLITE_UTF8);
118946c118946
<   const unsigned char * (*value_text)(sqlite3_value*);
---
>   const void * (*value_text)(sqlite3_value*);

version used:
sqlite-amalgamation-3270100

Thanks for all your work, it's amazing to use !
Best regards,
William
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to