@@ -493,6 +493,7 @@ TESTSRC += \
493
493
$(TOP ) /ext/misc/percentile.c \
494
494
$(TOP ) /ext/misc/prefixes.c \
495
495
$(TOP ) /ext/misc/qpvtab.c \
496
+ $(TOP ) /ext/misc/randomjson.c \
496
497
$(TOP ) /ext/misc/regexp.c \
497
498
$(TOP ) /ext/misc/remember.c \
498
499
$(TOP ) /ext/misc/series.c \
@@ -649,6 +650,7 @@ SHELL_OPT += -DSQLITE_ENABLE_DBPAGE_VTAB
649
650
SHELL_OPT += -DSQLITE_ENABLE_DBSTAT_VTAB
650
651
SHELL_OPT += -DSQLITE_ENABLE_BYTECODE_VTAB
651
652
SHELL_OPT += -DSQLITE_ENABLE_OFFSET_SQL_FUNC
653
+ SHELL_OPT += -DSQLITE_STRICT_SUBTYPE=1
652
654
FUZZERSHELL_OPT =
653
655
FUZZCHECK_OPT += -I$(TOP ) /test
654
656
FUZZCHECK_OPT += -I$(TOP ) /ext/recover
@@ -679,14 +681,17 @@ FUZZCHECK_OPT += \
679
681
-DSQLITE_MAX_MMAP_SIZE=0 \
680
682
-DSQLITE_OMIT_LOAD_EXTENSION \
681
683
-DSQLITE_PRINTF_PRECISION_LIMIT=1000 \
682
- -DSQLITE_PRIVATE=""
684
+ -DSQLITE_PRIVATE="" \
685
+ -DSQLITE_STRICT_SUBTYPE=1 \
686
+ -DSQLITE_STATIC_RANDOMJSON
683
687
684
688
FUZZCHECK_SRC += $(TOP ) /test/fuzzcheck.c
685
689
FUZZCHECK_SRC += $(TOP ) /test/ossfuzz.c
686
690
FUZZCHECK_SRC += $(TOP ) /test/fuzzinvariants.c
687
691
FUZZCHECK_SRC += $(TOP ) /ext/recover/dbdata.c
688
692
FUZZCHECK_SRC += $(TOP ) /ext/recover/sqlite3recover.c
689
693
FUZZCHECK_SRC += $(TOP ) /test/vt02.c
694
+ FUZZCHECK_SRC += $(TOP ) /ext/misc/randomjson.c
690
695
DBFUZZ_OPT =
691
696
ST_OPT = -DSQLITE_OS_KV_OPTIONAL
692
697
@@ -769,6 +774,21 @@ fuzzcheck-asan$(TEXE): $(FUZZCHECK_SRC) sqlite3.c sqlite3.h $(FUZZCHECK_DEP)
769
774
fuzzcheck-ubsan$(TEXE ) : $(FUZZCHECK_SRC ) sqlite3.c sqlite3.h $(FUZZCHECK_DEP )
770
775
$(LTLINK ) -o $@ -fsanitize=undefined $(FUZZCHECK_OPT ) $(FUZZCHECK_SRC ) sqlite3.c $(TLIBS )
771
776
777
+ # Usage: FUZZDB=filename make run-fuzzcheck
778
+ #
779
+ # Where filename is a fuzzcheck database, this target builds and runs
780
+ # fuzzcheck, fuzzcheck-asan, and fuzzcheck-ubsan on that database.
781
+ #
782
+ # FUZZDB can be a glob pattern of two or more databases. Example:
783
+ #
784
+ # FUZZDB=test/fuzzdata*.db make run-fuzzcheck
785
+ #
786
+ run-fuzzcheck : fuzzcheck$(TEXE ) fuzzcheck-asan$(TEXE ) fuzzcheck-ubsan$(TEXE )
787
+ @if test " $( FUZZDB) " = " " ; then echo ' ERROR: No FUZZDB specified. Rerun with FUZZDB=filename' ; exit 1; fi
788
+ ./fuzzcheck$(TEXE ) --spinner $(FUZZDB )
789
+ ./fuzzcheck-asan$(TEXE ) --spinner $(FUZZDB )
790
+ ./fuzzcheck-ubsan$(TEXE ) --spinner $(FUZZDB )
791
+
772
792
ossshell$(TEXE ) : $(TOP ) /test/ossfuzz.c $(TOP ) /test/ossshell.c sqlite3.c sqlite3.h
773
793
$(LTLINK ) -o $@ $(FUZZCHECK_OPT ) $(TOP ) /test/ossshell.c \
774
794
$(TOP)/test/ossfuzz.c sqlite3.c $(TLIBS) $(OPT_STATIC_LIBLIBSQL_WASM)
@@ -1223,19 +1243,21 @@ keywordhash.h: $(TOP)/tool/mkkeywordhash.c
1223
1243
# Source files that go into making shell.c
1224
1244
SHELL_SRC = \
1225
1245
$(TOP ) /src/shell.c.in \
1226
- $(TOP ) /ext/misc/appendvfs.c \
1246
+ $(TOP ) /ext/consio/console_io.c \
1247
+ $(TOP ) /ext/consio/console_io.h \
1248
+ $(TOP ) /ext/misc/appendvfs.c \
1227
1249
$(TOP ) /ext/misc/completion.c \
1228
- $(TOP ) /ext/misc/decimal.c \
1229
- $(TOP ) /ext/misc/basexx.c \
1230
- $(TOP ) /ext/misc/base64.c \
1231
- $(TOP ) /ext/misc/base85.c \
1250
+ $(TOP ) /ext/misc/decimal.c \
1251
+ $(TOP ) /ext/misc/basexx.c \
1252
+ $(TOP ) /ext/misc/base64.c \
1253
+ $(TOP ) /ext/misc/base85.c \
1232
1254
$(TOP ) /ext/misc/fileio.c \
1233
- $(TOP ) /ext/misc/ieee754.c \
1234
- $(TOP ) /ext/misc/regexp.c \
1235
- $(TOP ) /ext/misc/series.c \
1255
+ $(TOP ) /ext/misc/ieee754.c \
1256
+ $(TOP ) /ext/misc/regexp.c \
1257
+ $(TOP ) /ext/misc/series.c \
1236
1258
$(TOP ) /ext/misc/shathree.c \
1237
1259
$(TOP ) /ext/misc/sqlar.c \
1238
- $(TOP ) /ext/misc/uint.c \
1260
+ $(TOP ) /ext/misc/uint.c \
1239
1261
$(TOP ) /ext/expert/sqlite3expert.c \
1240
1262
$(TOP ) /ext/expert/sqlite3expert.h \
1241
1263
$(TOP ) /ext/misc/zipfile.c \
@@ -1244,7 +1266,7 @@ SHELL_SRC = \
1244
1266
$(TOP ) /ext/recover/dbdata.c \
1245
1267
$(TOP ) /ext/recover/sqlite3recover.c \
1246
1268
$(TOP ) /ext/recover/sqlite3recover.h \
1247
- $(TOP ) /src/test_windirent.c
1269
+ $(TOP ) /src/test_windirent.c
1248
1270
1249
1271
shell.c : $(SHELL_SRC ) $(TOP ) /tool/mkshellc.tcl has_tclsh84
1250
1272
$(TCLSH_CMD ) $(TOP ) /tool/mkshellc.tcl > shell.c
@@ -1365,6 +1387,8 @@ TESTFIXTURE_FLAGS += -DSQLITE_ENABLE_STMTVTAB
1365
1387
TESTFIXTURE_FLAGS += -DSQLITE_ENABLE_DBPAGE_VTAB
1366
1388
TESTFIXTURE_FLAGS += -DSQLITE_ENABLE_BYTECODE_VTAB
1367
1389
TESTFIXTURE_FLAGS += -DSQLITE_CKSUMVFS_STATIC
1390
+ TESTFIXTURE_FLAGS += -DSQLITE_STATIC_RANDOMJSON
1391
+ TESTFIXTURE_FLAGS += -DSQLITE_STRICT_SUBTYPE=1
1368
1392
1369
1393
TESTFIXTURE_SRC0 = $(TESTSRC2 ) libsqlite3.la
1370
1394
TESTFIXTURE_SRC1 = sqlite3.c
0 commit comments