blob: 691b961ac214379dd9746ae978c37d6ba3d46610 [file] [log] [blame]
#
# AFL dictionary for SQL
# ----------------------
#
# Modeled based on SQLite documentation, contains some number of SQLite
# extensions. Other dialects of SQL may benefit from customized dictionaries.
#
# If you append @1 to the file name when loading this dictionary, afl-fuzz
# will also additionally load a selection of pragma keywords that are very
# specific to SQLite (and are probably less interesting from the security
# standpoint, because they are usually not allowed in non-privileged
# contexts).
#
# Created by Michal Zalewski <lcamtuf@google.com>
#
function_abs=" abs(1)"
function_avg=" avg(1)"
function_changes=" changes()"
function_char=" char(1)"
function_coalesce=" coalesce(1,1)"
function_count=" count(1)"
function_date=" date(1,1,1)"
function_datetime=" datetime(1,1,1)"
function_decimal=" decimal(1,1)"
function_glob=" glob(1,1)"
function_group_concat=" group_concat(1,1)"
function_hex=" hex(1)"
function_ifnull=" ifnull(1,1)"
function_instr=" instr(1,1)"
function_julianday=" julianday(1,1,1)"
function_last_insert_rowid=" last_insert_rowid()"
function_length=" length(1)"
function_like=" like(1,1)"
function_likelihood=" likelihood(1,1)"
function_likely=" likely(1)"
function_load_extension=" load_extension(1,1)"
function_lower=" lower(1)"
function_ltrim=" ltrim(1,1)"
function_max=" max(1,1)"
function_min=" min(1,1)"
function_nullif=" nullif(1,1)"
function_printf=" printf(1,1)"
function_quote=" quote(1)"
function_random=" random()"
function_randomblob=" randomblob(1)"
function_replace=" replace(1,1,1)"
function_round=" round(1,1)"
function_rtrim=" rtrim(1,1)"
function_soundex=" soundex(1)"
function_sqlite_compileoption_get=" sqlite_compileoption_get(1)"
function_sqlite_compileoption_used=" sqlite_compileoption_used(1)"
function_sqlite_source_id=" sqlite_source_id()"
function_sqlite_version=" sqlite_version()"
function_strftime=" strftime(1,1,1,1)"
function_substr=" substr(1,1,1)"
function_sum=" sum(1)"
function_time=" time(1,1,1)"
function_total=" total(1)"
function_total_changes=" total_changes()"
function_trim=" trim(1,1)"
function_typeof=" typeof(1)"
function_unicode=" unicode(1)"
function_unlikely=" unlikely(1)"
function_upper=" upper(1)"
function_varchar=" varchar(1)"
function_zeroblob=" zeroblob(1)"
keyword_ABORT="ABORT"
keyword_ACTION="ACTION"
keyword_ADD="ADD"
keyword_AFTER="AFTER"
keyword_ALL="ALL"
keyword_ALTER="ALTER"
keyword_ANALYZE="ANALYZE"
keyword_AND="AND"
keyword_AS="AS"
keyword_ASC="ASC"
keyword_ATTACH="ATTACH"
keyword_AUTOINCREMENT="AUTOINCREMENT"
keyword_BEFORE="BEFORE"
keyword_BEGIN="BEGIN"
keyword_BETWEEN="BETWEEN"
keyword_BY="BY"
keyword_CASCADE="CASCADE"
keyword_CASE="CASE"
keyword_CAST="CAST"
keyword_CHECK="CHECK"
keyword_COLLATE="COLLATE"
keyword_COLUMN="COLUMN"
keyword_COMMIT="COMMIT"
keyword_CONFLICT="CONFLICT"
keyword_CONSTRAINT="CONSTRAINT"
keyword_CREATE="CREATE"
keyword_CROSS="CROSS"
keyword_CURRENT_DATE="CURRENT_DATE"
keyword_CURRENT_TIME="CURRENT_TIME"
keyword_CURRENT_TIMESTAMP="CURRENT_TIMESTAMP"
keyword_DATABASE="DATABASE"
keyword_DEFAULT="DEFAULT"
keyword_DEFERRABLE="DEFERRABLE"
keyword_DEFERRED="DEFERRED"
keyword_DELETE="DELETE"
keyword_DESC="DESC"
keyword_DETACH="DETACH"
keyword_DISTINCT="DISTINCT"
keyword_DROP="DROP"
keyword_EACH="EACH"
keyword_ELSE="ELSE"
keyword_END="END"
keyword_ESCAPE="ESCAPE"
keyword_EXCEPT="EXCEPT"
keyword_EXCLUSIVE="EXCLUSIVE"
keyword_EXISTS="EXISTS"
keyword_EXPLAIN="EXPLAIN"
keyword_FAIL="FAIL"
keyword_FOR="FOR"
keyword_FOREIGN="FOREIGN"
keyword_FROM="FROM"
keyword_FULL="FULL"
keyword_GLOB="GLOB"
keyword_GROUP="GROUP"
keyword_HAVING="HAVING"
keyword_IF="IF"
keyword_IGNORE="IGNORE"
keyword_IMMEDIATE="IMMEDIATE"
keyword_IN="IN"
keyword_INDEX="INDEX"
keyword_INDEXED="INDEXED"
keyword_INITIALLY="INITIALLY"
keyword_INNER="INNER"
keyword_INSERT="INSERT"
keyword_INSTEAD="INSTEAD"
keyword_INTERSECT="INTERSECT"
keyword_INTO="INTO"
keyword_IS="IS"
keyword_ISNULL="ISNULL"
keyword_JOIN="JOIN"
keyword_KEY="KEY"
keyword_LEFT="LEFT"
keyword_LIKE="LIKE"
keyword_LIMIT="LIMIT"
keyword_MATCH="MATCH"
keyword_NATURAL="NATURAL"
keyword_NO="NO"
keyword_NOT="NOT"
keyword_NOTNULL="NOTNULL"
keyword_NULL="NULL"
keyword_OF="OF"
keyword_OFFSET="OFFSET"
keyword_ON="ON"
keyword_OR="OR"
keyword_ORDER="ORDER"
keyword_OUTER="OUTER"
keyword_PLAN="PLAN"
keyword_PRAGMA="PRAGMA"
keyword_PRIMARY="PRIMARY"
keyword_QUERY="QUERY"
keyword_RAISE="RAISE"
keyword_RECURSIVE="RECURSIVE"
keyword_REFERENCES="REFERENCES"
#keyword_REGEXP="REGEXP"
keyword_REINDEX="REINDEX"
keyword_RELEASE="RELEASE"
keyword_RENAME="RENAME"
keyword_REPLACE="REPLACE"
keyword_RESTRICT="RESTRICT"
keyword_RIGHT="RIGHT"
keyword_ROLLBACK="ROLLBACK"
keyword_ROW="ROW"
keyword_SAVEPOINT="SAVEPOINT"
keyword_SELECT="SELECT"
keyword_SET="SET"
keyword_TABLE="TABLE"
keyword_TEMP="TEMP"
keyword_TEMPORARY="TEMPORARY"
keyword_THEN="THEN"
keyword_TO="TO"
keyword_TRANSACTION="TRANSACTION"
keyword_TRIGGER="TRIGGER"
keyword_UNION="UNION"
keyword_UNIQUE="UNIQUE"
keyword_UPDATE="UPDATE"
keyword_USING="USING"
keyword_VACUUM="VACUUM"
keyword_VALUES="VALUES"
keyword_VIEW="VIEW"
keyword_VIRTUAL="VIRTUAL"
keyword_WHEN="WHEN"
keyword_WHERE="WHERE"
keyword_WITH="WITH"
keyword_WITHOUT="WITHOUT"
operator_concat=" || "
operator_ebove_eq=" >="
snippet_1eq1=" 1=1"
snippet_at=" @1"
snippet_backticks=" `a`"
snippet_blob=" blob"
snippet_brackets=" [a]"
snippet_colon=" :1"
snippet_comment=" /* */"
snippet_date="2001-01-01"
snippet_dollar=" $1"
snippet_dotref=" a.b"
snippet_fmtY="%Y"
snippet_int=" int"
snippet_neg1=" -1"
snippet_pair=" a,b"
snippet_parentheses=" (1)"
snippet_plus2days="+2 days"
snippet_qmark=" ?1"
snippet_semicolon=" ;"
snippet_star=" *"
snippet_string_pair=" \"a\",\"b\""
string_dbl_q=" \"a\""
string_escaped_q=" 'a''b'"
string_single_q=" 'a'"
pragma_application_id@1=" application_id"
pragma_auto_vacuum@1=" auto_vacuum"
pragma_automatic_index@1=" automatic_index"
pragma_busy_timeout@1=" busy_timeout"
pragma_cache_size@1=" cache_size"
pragma_cache_spill@1=" cache_spill"
pragma_case_sensitive_like@1=" case_sensitive_like"
pragma_checkpoint_fullfsync@1=" checkpoint_fullfsync"
pragma_collation_list@1=" collation_list"
pragma_compile_options@1=" compile_options"
pragma_count_changes@1=" count_changes"
pragma_data_store_directory@1=" data_store_directory"
pragma_database_list@1=" database_list"
pragma_default_cache_size@1=" default_cache_size"
pragma_defer_foreign_keys@1=" defer_foreign_keys"
pragma_empty_result_callbacks@1=" empty_result_callbacks"
pragma_encoding@1=" encoding"
pragma_foreign_key_check@1=" foreign_key_check"
pragma_foreign_key_list@1=" foreign_key_list"
pragma_foreign_keys@1=" foreign_keys"
pragma_freelist_count@1=" freelist_count"
pragma_full_column_names@1=" full_column_names"
pragma_fullfsync@1=" fullfsync"
pragma_ignore_check_constraints@1=" ignore_check_constraints"
pragma_incremental_vacuum@1=" incremental_vacuum"
pragma_index_info@1=" index_info"
pragma_index_list@1=" index_list"
pragma_integrity_check@1=" integrity_check"
pragma_journal_mode@1=" journal_mode"
pragma_journal_size_limit@1=" journal_size_limit"
pragma_legacy_file_format@1=" legacy_file_format"
pragma_locking_mode@1=" locking_mode"
pragma_max_page_count@1=" max_page_count"
pragma_mmap_size@1=" mmap_size"
pragma_page_count@1=" page_count"
pragma_page_size@1=" page_size"
pragma_parser_trace@1=" parser_trace"
pragma_query_only@1=" query_only"
pragma_quick_check@1=" quick_check"
pragma_read_uncommitted@1=" read_uncommitted"
pragma_recursive_triggers@1=" recursive_triggers"
pragma_reverse_unordered_selects@1=" reverse_unordered_selects"
pragma_schema_version@1=" schema_version"
pragma_secure_delete@1=" secure_delete"
pragma_short_column_names@1=" short_column_names"
pragma_shrink_memory@1=" shrink_memory"
pragma_soft_heap_limit@1=" soft_heap_limit"
pragma_stats@1=" stats"
pragma_synchronous@1=" synchronous"
pragma_table_info@1=" table_info"
pragma_temp_store@1=" temp_store"
pragma_temp_store_directory@1=" temp_store_directory"
pragma_threads@1=" threads"
pragma_user_version@1=" user_version"
pragma_vdbe_addoptrace@1=" vdbe_addoptrace"
pragma_vdbe_debug@1=" vdbe_debug"
pragma_vdbe_listing@1=" vdbe_listing"
pragma_vdbe_trace@1=" vdbe_trace"
pragma_wal_autocheckpoint@1=" wal_autocheckpoint"
pragma_wal_checkpoint@1=" wal_checkpoint"
pragma_writable_schema@1=" writable_schema"
# This part has been generated with testing/libfuzzer/dictionary_generator.py
# using sqlite3_prepare_v2_fuzzer binary and ISO/IEC FCD 9075-1.
"all"
"code"
"BE"
"text"
"TP2,"
"supported"
"GR4)"
"syntax"
"S151,"
"S043,"
"\xe2\x80\x9cCR\xe2\x80\x9d"
"(SQL/PSM)"
"query"
"expressions"
"TP2;"
"row"
"[ISO9075-14],"
"BNF."
"<SQL"
"parameters"
"title"
"S211,"
"ISO/IEC:"
"BNF,"
"SQL_FEATURES"
"should"
"to"
"only"
"program"
"present"
"T211,"
"G,"
"local"
"NY"
"columns"
"END."
"do"
"OBJECT"
"rollback"
"string"
"FEAT2."
"get"
"H"
"P001,"
"between"
"RI."
"[ISO9075-11]"
"cannot"
"entries"
"referencing"
"datetime"
"[UCS]."
"BNF"
"MINUTE"
"(BNF"
"IEC,"
"False"
"OF,"
"level"
"did"
"W."
"list"
"large"
"SQL)"
"PSM."
"(ISO/IEC"
"SQL,"
"SQL-"
"SQL."
"small"
"x"
"DEFINITION_SCHEMA;"
"view"
"Index"
"[ISO9075-3])."
"set"
"S024,"
"CHANGE."
"reference"
"T1,"
"OLAP."
"direct"
"(SQL/XML)."
"LARGE"
"likely"
"result"
"T341,"
"ST"
"ISO/JTC"
"INSERT,"
"PKG004"
"index"
"PKG006"
"PKG007"
"PKG001"
"PKG002"
"PKG008"
"supplied"
"T611,"
"access"
"3"
"version"
"NULL."
"routine"
"[ISO9075-10])."
"S1"
"[UCS],"
"P003,"
"C"
"terms"
"(SQL/MED)"
"JTC1/SC32"
"K"
"(SQL/JRT)"
"modify"
"reported"
"S"
"objects"
"32N1821"
"SECOND."
"key"
"UNDER"
"(ANSI)"
"rows"
"come"
"(CALL"
"change"
"P-"
"both"
"search"
"SQLSTATE,"
"[ISO9075-"
"[ISO9075-14]."
"many"
"changed"
"foreign"
"Symbols"
"S023,"
"connection"
"SQL\xe2\x80\x9d),"
"context"
"delete"
"changes"
"REFERENCES,"
"page."
"named"
"point"
"UPDATE."
"S2"
"UPDATE,"
"[ISO9075-13]"
"Y\xe2\x80\x9d"
"replace"
"\xe2\x80\x9cPSM\xe2\x80\x9d"
"SERIALIZABLE,"
"names"
"E"
"PUBLIC."
"table"
"REF"
"INFORMATION_SCHEMA"
"C1."
"ID."
"use"
"[ISO9075-2]."
"from"
"USA"
"0"
"distinct"
"create"
"contains"
"due"
"ISO."
"few"
"duplicate"
"trigger"
"call"
"S111,"
"expected"
"REPEATABLE"
"C1"
"DOCUMENT"
"type"
"authorization"
"more"
"XML"
"[ISO9075-3],"
"<A>,"
"P"
"on"
"initial"
"name,"
"[ISO9075-11]),"
"QE,"
"STANDARD"
"PKG010"
"TRIGGER,"
"V"
"CS"
"SQL\xe2\x80\x9d:"
"IEC"
"Expression"
"F521,"
"sequence:"
"must"
"none"
"SR3)"
"word"
"INTERNATIONAL"
"ANSI"
"this"
"PSM"
"PUBLIC),"
"modified"
"value"
"<"
"descriptor"
"while"
"paragraph"
"values"
"resources"
"error"
"exceptions"
"IT"
"F,"
"CO,"
"[ISO9075-4],"
"control"
"type,"
"reserved"
"SQL:"
"<C>"
"[ISO9075-2])."
"F052,"
"attribute"
"is"
"type:"
"level,"
"it"
"[ISO9075-2],"
"incremental"
"MONTH,"
"dropped"
"MONTH."
"allowed"
"S241,"
"\xe2\x80\x9cSQL"
"TIMESTAMP"
"failed"
"SC"
"end"
"Format"
"ST."
"permission"
"V,"
"length"
"same"
"[ISO10646]."
"write"
"arguments"
"F555,"
"F671,"
"<C>,"
"<C>."
"parameter"
"NATIONAL"
"Types"
"A"
"Insert"
"32/WG"
"used"
"temporary"
"\xe2\x80\x9cOLAP\xe2\x80\x9d"
"(FCD)"
"may"
"after"
"(SQL/OLB)"
"THIS"
"Q"
"SQL/CLI"
"levels"
"two"
"characters"
"date"
"such"
"[ISO9075-9]"
"data"
"stack"
"single"
"a"
"FEAT,"
"lower"
"transaction"
"in"
"database"
"EXTRACT)"
"expression"
"32N1963"
"CD"
"without"
"QE."
"1"
"CALL"
"F"
"[ISO9075-4])."
"entry"
"the"
"SUBJECT"
"N1968;"
"order"
"left"
"FEAT1,"
"FEAT1."
"S081,"
"YEAR"
"READ,"
"SQL;"
"A,"
"symbols"
"S161,"
"[ISO9075-10]"
"already"
"identify"
"V."
"during"
"differs"
"(UCS)."
"Final"
"before"
"tables"
"[UCS]"
"Multiple"
"integer"
"NT,"
"character"
","
"ID\xe2\x80\x9d"
"(INFORMATION_SCHEMA)"
"source"
"add"
"other"
"TP1"
"SQLSTATE"
"has"
"match"
"KEY."
"real"
"On"
"C1,"
"D"
"[ISO14651]"
"views"
"read"
"\xe2\x80\x9cGR\xe2\x80\x9d"
"L"
"primary"
"TB1."
"qualified"
"(SUBSTRING,"
"T"
"compound"
"not"
"using"
"unique"
"LOB"
"name"
"term"
"sorting"
"like"
"B,"
"[ISO9075-1]"
"RESULT,"
"Numeric"
"MONTH"
"PURPOSES."
"[ISO9075-11]."
"mode"
"(DEFINITION_SCHEMA)."
"SQL"
"ISO"
"page"
"constraints"
"\xc2\xa9ISO/IEC"
"right"
"Java"
"sequence"
"TB1"
"TB2"
"P002,"
"DAY,"
"extended"
"(SQL/CLI)"
"X"
"specified"
"S051,"
"clauses"
"operation"
"FEAT"
"out"
"E,"
"XML."
"for"
"space"
"support"
"T041,"
"[ISO9075-4]"
"content"
"I"
"does"
"STUDY"
"CHARACTER,"
"B1"
"T212,"
"be"
"object"
"[ISO9075-11],"
"G"
"ZONE,"
"S2."
"collations"
"[ISO9075-2]:"
"<A>"
"O"
"standard"
"[ISO9075-2]"
"base"
"W"
"collation"
"HOUR,"
"UNDER,"
"JTC"
"C."
"definition"
"Square"
"\xe2\x80\x9cSR\xe2\x80\x9d"
"extension"
"constraint"
"column"
"of"
"C,"
"F701,"
"(SQL/CLI)."
"T191,"
"range"
"GR"
"1,"
"constructor"
"commit"
"or"
"first"
"referenced"
"statements"
"encoding"
"B1."
"clause"
"variables"
"within"
"number"
"one"
"NT"
"variable"
"because"
"references"
"another"
"blank"
"operator"
"RETURN"
"COMMITTED,"
"9075-1:2011(E)"
"[ISO9075-14]"
"(SQL/OLB)."
"D1"
"exists"
"REFERENCE"
"area"
"S041,"
"unknown"
"Symbol"
"there"
"system"
"long"
"ID"
"start"
"returns"
"2"
"authorized"
"statement"
"X2"
"FCD"
"STILL"
"S231,"
"final"
"READ"
"schema"
"function"
"DELETE,"
"B"
"TC\xe2\x80\x9d."
"declare"
"month"
"Deprecated"
"exactly"
"[ISO10646]"
"JTC1"
"but"
"9075-1:2010(E)"
"part"
"T201,"
"D2."
"<B>,"
"attempt"
"line"
"with"
"than"
"<B>"
"BEFORE,"
"DAY."
"DATE"
"default"
"EXECUTE."
"B1,"
"F191,"
"tree"
"second"
"SHOULD"
"[ISO9075-13],"
"A1,"
"1/SC"
"VARYING,"
"<B>."
"SQL/CLI,"
"were"
"1)"
"<A>."
"CLI,"
"called"
"are"
"and"
"(SQL/MED)."
"[ISO9075-4]:"
"associated"
"\xe2\x80\x9cAR\xe2\x80\x9d"
"defined"
"(SQL/XML)"
"CHARACTER"
"argument"
"an"
"[ISO9075-4])"
"non-deterministic"
"as"
"Other"
"at"
"have"
"[ISO9075-4]."
"CS."
"\xe2\x80\x9cV\xe2\x80\x9d"
"Y."
"null"
"any"
"CLI"
"Function"
"NOTE"
"functions"
"UCS"
"returned"
"F411,"
"no"
"TIME"
"that"
"-"
"RETURN),"
"A1"
"OLAP"
"internal"
"S071,"
"[ISO9075-10],"
"T431,"
"A1."
"\xe2\x80\x9cONLY"
"Y"
"SS"
"UNCOMMITTED,"
"multiple"
"Name"
"truncate"
"normal"
"symbol"
"literal"
"M"
"\xe2\x80\x9c<SQL"
"prepared"
"most"
"ATOMIC,"
"E."
"U"
"letter"
"PUBLIC"
"identical"
"F491,"
"N"
"inserted"
"Page"
"(SQL/JRT)."
"D,"
"SELECT,"
"USED"
"lead"
"Sequence"
"FEAT1"
"into"
"required"
"[ISO9075-9],"
"USAGE,"
"2nd"
"depth"
"R"
"ISO,"
"time"
"SQL\xe2\x80\x9d,"
"FEAT2"
"[ISO9075-3]"
"(SQL/PSM)."
"ISO/IEC"