@@ -447,6 +447,7 @@ TESTSRC += \
447447 $(TOP ) /ext/misc/percentile.c \
448448 $(TOP ) /ext/misc/prefixes.c \
449449 $(TOP ) /ext/misc/qpvtab.c \
450+ $(TOP ) /ext/misc/randomjson.c \
450451 $(TOP ) /ext/misc/regexp.c \
451452 $(TOP ) /ext/misc/remember.c \
452453 $(TOP ) /ext/misc/series.c \
@@ -600,6 +601,7 @@ SHELL_OPT += -DSQLITE_ENABLE_DBPAGE_VTAB
600601SHELL_OPT += -DSQLITE_ENABLE_DBSTAT_VTAB
601602SHELL_OPT += -DSQLITE_ENABLE_BYTECODE_VTAB
602603SHELL_OPT += -DSQLITE_ENABLE_OFFSET_SQL_FUNC
604+ SHELL_OPT += -DSQLITE_STRICT_SUBTYPE=1
603605FUZZERSHELL_OPT =
604606FUZZCHECK_OPT += -I$(TOP ) /test
605607FUZZCHECK_OPT += -I$(TOP ) /ext/recover
@@ -630,14 +632,17 @@ FUZZCHECK_OPT += \
630632 -DSQLITE_MAX_MMAP_SIZE=0 \
631633 -DSQLITE_OMIT_LOAD_EXTENSION \
632634 -DSQLITE_PRINTF_PRECISION_LIMIT=1000 \
633- -DSQLITE_PRIVATE=""
635+ -DSQLITE_PRIVATE="" \
636+ -DSQLITE_STRICT_SUBTYPE=1 \
637+ -DSQLITE_STATIC_RANDOMJSON
634638
635639FUZZCHECK_SRC += $(TOP ) /test/fuzzcheck.c
636640FUZZCHECK_SRC += $(TOP ) /test/ossfuzz.c
637641FUZZCHECK_SRC += $(TOP ) /test/fuzzinvariants.c
638642FUZZCHECK_SRC += $(TOP ) /ext/recover/dbdata.c
639643FUZZCHECK_SRC += $(TOP ) /ext/recover/sqlite3recover.c
640644FUZZCHECK_SRC += $(TOP ) /test/vt02.c
645+ FUZZCHECK_SRC += $(TOP ) /ext/misc/randomjson.c
641646DBFUZZ_OPT =
642647ST_OPT = -DSQLITE_OS_KV_OPTIONAL
643648
@@ -710,6 +715,21 @@ fuzzcheck-asan$(TEXE): $(FUZZCHECK_SRC) sqlite3.c sqlite3.h $(FUZZCHECK_DEP)
710715fuzzcheck-ubsan$(TEXE ) : $(FUZZCHECK_SRC ) sqlite3.c sqlite3.h $(FUZZCHECK_DEP )
711716 $(LTLINK ) -o $@ -fsanitize=undefined $(FUZZCHECK_OPT ) $(FUZZCHECK_SRC ) sqlite3.c $(TLIBS )
712717
718+ # Usage: FUZZDB=filename make run-fuzzcheck
719+ #
720+ # Where filename is a fuzzcheck database, this target builds and runs
721+ # fuzzcheck, fuzzcheck-asan, and fuzzcheck-ubsan on that database.
722+ #
723+ # FUZZDB can be a glob pattern of two or more databases. Example:
724+ #
725+ # FUZZDB=test/fuzzdata*.db make run-fuzzcheck
726+ #
727+ run-fuzzcheck : fuzzcheck$(TEXE ) fuzzcheck-asan$(TEXE ) fuzzcheck-ubsan$(TEXE )
728+ @if test " $( FUZZDB) " = " " ; then echo ' ERROR: No FUZZDB specified. Rerun with FUZZDB=filename' ; exit 1; fi
729+ ./fuzzcheck$(TEXE ) --spinner $(FUZZDB )
730+ ./fuzzcheck-asan$(TEXE ) --spinner $(FUZZDB )
731+ ./fuzzcheck-ubsan$(TEXE ) --spinner $(FUZZDB )
732+
713733ossshell$(TEXE ) : $(TOP ) /test/ossfuzz.c $(TOP ) /test/ossshell.c sqlite3.c sqlite3.h
714734 $(LTLINK ) -o $@ $(FUZZCHECK_OPT ) $(TOP ) /test/ossshell.c \
715735 $(TOP)/test/ossfuzz.c sqlite3.c $(TLIBS)
@@ -1135,21 +1155,21 @@ keywordhash.h: $(TOP)/tool/mkkeywordhash.c
11351155# Source files that go into making shell.c
11361156SHELL_SRC = \
11371157 $(TOP ) /src/shell.c.in \
1138- $(TOP ) /ext/misc/appendvfs.c \
1158+ $(TOP ) /ext/consio/console_io.c \
1159+ $(TOP ) /ext/consio/console_io.h \
1160+ $(TOP ) /ext/misc/appendvfs.c \
11391161 $(TOP ) /ext/misc/completion.c \
1140- $(TOP ) /ext/consio/console_io.c \
1141- $(TOP ) /ext/consio/console_io.h \
1142- $(TOP ) /ext/misc/decimal.c \
1143- $(TOP ) /ext/misc/basexx.c \
1144- $(TOP ) /ext/misc/base64.c \
1145- $(TOP ) /ext/misc/base85.c \
1162+ $(TOP ) /ext/misc/decimal.c \
1163+ $(TOP ) /ext/misc/basexx.c \
1164+ $(TOP ) /ext/misc/base64.c \
1165+ $(TOP ) /ext/misc/base85.c \
11461166 $(TOP ) /ext/misc/fileio.c \
1147- $(TOP ) /ext/misc/ieee754.c \
1148- $(TOP ) /ext/misc/regexp.c \
1149- $(TOP ) /ext/misc/series.c \
1167+ $(TOP ) /ext/misc/ieee754.c \
1168+ $(TOP ) /ext/misc/regexp.c \
1169+ $(TOP ) /ext/misc/series.c \
11501170 $(TOP ) /ext/misc/shathree.c \
11511171 $(TOP ) /ext/misc/sqlar.c \
1152- $(TOP ) /ext/misc/uint.c \
1172+ $(TOP ) /ext/misc/uint.c \
11531173 $(TOP ) /ext/expert/sqlite3expert.c \
11541174 $(TOP ) /ext/expert/sqlite3expert.h \
11551175 $(TOP ) /ext/misc/zipfile.c \
@@ -1158,7 +1178,7 @@ SHELL_SRC = \
11581178 $(TOP ) /ext/recover/dbdata.c \
11591179 $(TOP ) /ext/recover/sqlite3recover.c \
11601180 $(TOP ) /ext/recover/sqlite3recover.h \
1161- $(TOP ) /src/test_windirent.c
1181+ $(TOP ) /src/test_windirent.c
11621182
11631183shell.c : $(SHELL_SRC ) $(TOP ) /tool/mkshellc.tcl has_tclsh84
11641184 $(TCLSH_CMD ) $(TOP ) /tool/mkshellc.tcl > shell.c
@@ -1276,6 +1296,8 @@ TESTFIXTURE_FLAGS += -DSQLITE_ENABLE_STMTVTAB
12761296TESTFIXTURE_FLAGS += -DSQLITE_ENABLE_DBPAGE_VTAB
12771297TESTFIXTURE_FLAGS += -DSQLITE_ENABLE_BYTECODE_VTAB
12781298TESTFIXTURE_FLAGS += -DSQLITE_CKSUMVFS_STATIC
1299+ TESTFIXTURE_FLAGS += -DSQLITE_STATIC_RANDOMJSON
1300+ TESTFIXTURE_FLAGS += -DSQLITE_STRICT_SUBTYPE=1
12791301
12801302TESTFIXTURE_SRC0 = $(TESTSRC2 ) libsqlite3.la
12811303TESTFIXTURE_SRC1 = sqlite3.c
0 commit comments