# JPEG Dictionary for libFuzzer # Contains JPEG markers, common signatures, and important byte patterns # ================================================== # JPEG markers (2-byte sequences starting with 0xFF) # ================================================== # Start Of Image/End Of Image (SOI/EOI) soi="\xff\xd8" eoi="\xff\xd9" # Start Of Frame (SOF0-SOF15) # Baseline DCT sof0="\xff\xc0" # Extended sequential DCT, Huffman coding sof1="\xff\xc1" # Progressive DCT, Huffman coding sof2="\xff\xc2" # Lossless, Huffman coding sof3="\xff\xc3" # Differential sequential DCT, Huffman coding sof5="\xff\xc5" # Differential progressive DCT, Huffman coding sof6="\xff\xc6" # Differential lossless, Huffman coding sof7="\xff\xc7" # Sequential DCT, arithmetic coding sof9="\xff\xc9" # Progressive DCT, arithmetic coding sof10="\xff\xca" # Lossless, arithmetic coding sof11="\xff\xcb" # Differential sequential DCT, arithmetic coding sof13="\xff\xcd" # Differential progressive DCT, arithmetic coding sof14="\xff\xce" # Differential lossless, arithmetic coding sof15="\xff\xcf" # Define Huffman Tables (DHT) dht="\xff\xc4" # Define Arithmetic Coding conditioning (DAC) dac="\xff\xcc" # Define Quantization Tables (DQT) dqt="\xff\xdb" # Define Restart Interval (DRI) dri="\xff\xdd" # Start Of Scan (SOS) sos="\xff\xda" # Restart (RST0-RST7) rst0="\xff\xd0" rst1="\xff\xd1" rst2="\xff\xd2" rst3="\xff\xd3" rst4="\xff\xd4" rst5="\xff\xd5" rst6="\xff\xd6" rst7="\xff\xd7" # Application (APP0-APP15) app0="\xff\xe0" app1="\xff\xe1" app2="\xff\xe2" app3="\xff\xe3" app4="\xff\xe4" app5="\xff\xe5" app6="\xff\xe6" app7="\xff\xe7" app8="\xff\xe8" app9="\xff\xe9" app10="\xff\xea" app11="\xff\xeb" app12="\xff\xec" app13="\xff\xed" app14="\xff\xee" app15="\xff\xef" # Comment (COM) com="\xff\xfe" # Define Number of Lines (DNL) dnl="\xff\xdc" # Expand reference components (EXP) exp="\xff\xdf" # JPEG extensions (JPG0-JPG13) jpg0="\xff\xf0" jpg1="\xff\xf1" jpg2="\xff\xf2" jpg3="\xff\xf3" jpg4="\xff\xf4" jpg5="\xff\xf5" jpg6="\xff\xf6" jpg7="\xff\xf7" jpg8="\xff\xf8" jpg9="\xff\xf9" jpg10="\xff\xfa" jpg11="\xff\xfb" jpg12="\xff\xfc" jpg13="\xff\xfd" # Temporary (TEM) tem="\xff\x01" # Reserved (RES) res_02="\xff\x02" res_bf="\xff\xbf" # Fill byte (byte stuffing) fill="\xff\x00" # ============================== # Application segment signatures # ============================== # JFIF signature (in APP0) jfif="JFIF\x00" jfif_ver="\x01\x01" jfif_ver2="\x01\x02" # JFXX signature (in APP0) jfxx="JFXX\x00" # Exif signature (in APP1) exif="Exif\x00\x00" # XMP signature (in APP1) xmp="http://ns.adobe.com/xap/1.0/\x00" # ICC Profile signature (in APP2) icc="ICC_PROFILE\x00" # Adobe signature (in APP14) adobe="Adobe\x00" # Photoshop signature (in APP13) photoshop="Photoshop 3.0\x008BIM" # ============================ # TIFF/Exif byte order markers # ============================ tiff_le="II\x2a\x00" tiff_be="MM\x00\x2a" # ================================= # Common length values (big-endian) # ================================= len_2="\x00\x02" len_4="\x00\x04" len_8="\x00\x08" len_16="\x00\x10" len_17="\x00\x11" len_32="\x00\x20" len_64="\x00\x40" len_128="\x00\x80" len_256="\x01\x00" len_512="\x02\x00" len_1024="\x04\x00" # ============================================ # Image dimensions (common values, big-endian) # ============================================ dim_1="\x00\x01" dim_8="\x00\x08" dim_16="\x00\x10" dim_64="\x00\x40" dim_128="\x00\x80" dim_256="\x01\x00" dim_512="\x02\x00" dim_1024="\x04\x00" dim_2048="\x08\x00" dim_4096="\x10\x00" # ======================== # Component counts and IDs # ======================== comp_1="\x01" comp_2="\x02" comp_3="\x03" comp_4="\x04" # Component IDs (Y, Cb, Cr) comp_y="\x01" comp_cb="\x02" comp_cr="\x03" comp_r="\x52" comp_g="\x47" comp_b="\x42" # =========================================== # Sampling factors (packed H:V into one byte) # =========================================== samp_11="\x11" samp_21="\x21" samp_12="\x12" samp_22="\x22" samp_41="\x41" samp_14="\x14" samp_44="\x44" # ====================== # Quantization table IDs # ====================== qt_0="\x00" qt_1="\x01" qt_2="\x02" qt_3="\x03" qt_16bit_0="\x10" qt_16bit_1="\x11" # ======================================= # Huffman table class and ID combinations # ======================================= ht_dc_0="\x00" ht_dc_1="\x01" ht_dc_2="\x02" ht_dc_3="\x03" ht_ac_0="\x10" ht_ac_1="\x11" ht_ac_2="\x12" ht_ac_3="\x13" # ===================== # Data precision values # ===================== prec_8="\x08" prec_12="\x0c" prec_16="\x10" # ===================================== # Huffman code lengths (for DHT marker) # ===================================== huff_0_codes="\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" huff_std_dc="\x00\x01\x05\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00" huff_std_ac="\x00\x02\x01\x03\x03\x02\x04\x03\x05\x05\x04\x04\x00\x00\x01\x7d" # ======================= # Restart interval values # ======================= ri_0="\x00\x00" ri_1="\x00\x01" ri_8="\x00\x08" ri_16="\x00\x10" ri_100="\x00\x64" ri_256="\x01\x00" # ================== # Scan header values # ================== scan_start_0="\x00" scan_start_1="\x01" scan_end_0="\x00" scan_end_63="\x3f" scan_approx_0="\x00" scan_approx_10="\x10" scan_approx_01="\x01" scan_approx_11="\x11" scan_approx_21="\x21" # =================================== # Progressive scan approximation bits # =================================== ah_al_00="\x00" ah_al_10="\x10" ah_al_20="\x20" ah_al_01="\x01" ah_al_11="\x11" ah_al_21="\x21" ah_al_12="\x12" # ========================= # Lossless predictor values # ========================= pred_0="\x00" pred_1="\x01" pred_2="\x02" pred_3="\x03" pred_4="\x04" pred_5="\x05" pred_6="\x06" pred_7="\x07" # ============================== # Common marker segment patterns # ============================== # Minimal DQT segment (64-byte table + header) dqt_hdr="\xff\xdb\x00\x43\x00" # Minimal DHT segment header dht_hdr="\xff\xc4\x00\x1f\x00" # Minimal SOF0 segment header (baseline) sof0_hdr="\xff\xc0\x00\x0b\x08" # Minimal SOS segment header sos_hdr="\xff\xda\x00\x08\x01" # Typical 3-component SOS sos_3comp="\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00\x3f\x00" # ================ # Edge case values # ================ zero="\x00" one="\x01" max_byte="\xff" mid="\x80" val_7f="\x7f" val_fe="\xfe" # Large values (for dimension fuzzing) large_dim="\xff\xff" large_len="\xff\xfe" # =============================== # Entropy coding segment patterns # =============================== # Common DC coefficient patterns dc_zero="\x00" dc_small="\xf0" # EOB (End Of Block) for AC eob="\x00" # ZRL (Zero Run Length) - 16 zeros zrl="\xf0" # =========================== # JPEG file structure markers # =========================== # SOI + APP0 (JFIF header start) soi_app0="\xff\xd8\xff\xe0" # Minimal JFIF APP0 segment jfif_app0="\xff\xe0\x00\x10JFIF\x00\x01\x01\x00\x00\x01\x00\x01\x00\x00" # SOI + SOF0 (baseline start) soi_sof0="\xff\xd8\xff\xc0" # SOI + SOF2 (progressive start) soi_sof2="\xff\xd8\xff\xc2" # DQT + SOF sequence dqt_sof="\xff\xdb\xff\xc0" # SOF + DHT sequence sof_dht="\xff\xc0\xff\xc4" # DHT + SOS sequence dht_sos="\xff\xc4\xff\xda" # SOS + EOI (end of scan + End Of Image) sos_eoi="\xff\xda\xff\xd9" # ==================== # ICC profile patterns # ==================== icc_sig="ICC_PROFILE\x00\x01\x01" icc_multi_1="ICC_PROFILE\x00\x01\x02" icc_multi_2="ICC_PROFILE\x00\x02\x02" # ========================== # Arithmetic coding patterns # ========================== arith_cond="\x00\x00" arith_kx="\x00\x05" # ==================================== # Color transform values (Adobe APP14) # ==================================== adobe_transform_0="\x00" adobe_transform_1="\x01" adobe_transform_2="\x02"