mirror of
https://git.code.sf.net/p/zint/code
synced 2026-05-13 09:33:52 +00:00
raster/vector: fix BARCODE_BIND_TOP trumping BARCODE_BOX
backend/tests/fuzz: update "fuzz.h" to take `option_3` min/max; update `INPUT_MODE_MASK` & `OUTPUT_OPTIONS_MASK`; set `height`, `border_width` & `output_options` from input (removing `Z_FUZZ_SET_OUTPUT_OPTIONS` conditional) and call `ZBarcode_Encode_and_Print()` instead of `ZBarcode_Encode()`; support standalone builds of "fuzz_data" & "fuzz_gs1" with `Z_FUZZ_MAIN_READ_ARGV_1` macro; update "fuzz_gs1" & "fuzz_gs1.dict" to better test caret/raw modes; gen_corpora: add `output_options`, `height` & `border_width` & find (3rd) from fuzz_data of BIND_TOP | BIND_BOX bug
This commit is contained in:
@@ -17,5 +17,6 @@
|
||||
FROM gcr.io/oss-fuzz-base/base-builder
|
||||
RUN apt-get update && apt-get install -y make cmake
|
||||
RUN git clone --depth 1 https://git.code.sf.net/p/zint/code zint
|
||||
#ADD ./zint.tar.gz zint
|
||||
WORKDIR zint
|
||||
COPY build.sh $SRC/
|
||||
|
||||
56
backend/tests/fuzz/README
Normal file
56
backend/tests/fuzz/README
Normal file
@@ -0,0 +1,56 @@
|
||||
% backend/tests/fuzz/README 2026-03-22
|
||||
% vim: set ts=4 sw=4 et :
|
||||
|
||||
To run fuzzers "fuzz_data" and "fuzz_gs1" using OSS-Fuzz
|
||||
|
||||
Assuming have cloned OSS-Fuzz somewhere:
|
||||
|
||||
git clone https://github.com/google/oss-fuzz
|
||||
|
||||
and using the following shell vars:
|
||||
|
||||
export OSS_FUZZ_DIR=<oss-fuzz-clone-dir>
|
||||
export ZINT_DIR=<zint-clone-dir>
|
||||
export PROJECT_NAME=zint
|
||||
|
||||
make sure have latest:
|
||||
|
||||
cd $OSS_FUZZ_DIR
|
||||
git pull origin master
|
||||
|
||||
Link zint's "backend/tests/fuzz" to a sub-dir of OSS-Fuzz`s project dir as "zint", e.g.:
|
||||
|
||||
cd $OSS_FUZZ_DIR/projects
|
||||
ln -s $ZINT_DIR/backend/tests/fuzz $PROJECT_NAME
|
||||
|
||||
Create corpus dirs, e.g. could create in the "build" dir in "<oss_fuzz_dir>":
|
||||
|
||||
mkdir -p $OSS_FUZZ_DIR/build/corpus_data
|
||||
mkdir -p $OSS_FUZZ_DIR/build/corpus_gs1
|
||||
|
||||
Then can use OSS-Fuzz's python helpers to build the docker image and fuzzers:
|
||||
|
||||
cd $OSS_FUZZ_DIR/projects/$PROJECT_NAME
|
||||
python3 $OSS_FUZZ_DIR/infra/helper.py build_image $PROJECT_NAME
|
||||
|
||||
(on any subsequent runs can add "--no-pull" option to avoid question)
|
||||
|
||||
python3 $OSS_FUZZ_DIR/infra/helper.py build_fuzzers $PROJECT_NAME
|
||||
|
||||
Then run "fuzz_data":
|
||||
|
||||
python3 $OSS_FUZZ_DIR/infra/helper.py run_fuzzer --corpus-dir=build/corpus_data $PROJECT_NAME fuzz_data
|
||||
|
||||
and/or "fuzz_gs1":
|
||||
|
||||
python3 $OSS_FUZZ_DIR/infra/helper.py run_fuzzer --corpus-dir=build/corpus_gs1 $PROJECT_NAME fuzz_gs1
|
||||
|
||||
If want to test local changes not in zint's commit tree, then create an archive, e.g.
|
||||
|
||||
cd $ZINT_DIR
|
||||
git stash
|
||||
git archive -o backend/tests/fuzz/zint.tar.gz 'stash@{0}'
|
||||
git stash pop
|
||||
|
||||
then edit "Dockerfile" and comment out "RUN zint clone ..." and uncomment "ADD ./zint.tar.gz zint" and
|
||||
rebuild Docker image and fuzzers.
|
||||
@@ -42,14 +42,13 @@
|
||||
#define ZARRAY_SIZE(x) ((int) (sizeof(x) / sizeof((x)[0])))
|
||||
|
||||
#define INPUT_MODE_MASK (ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE | HEIGHTPERROW_MODE | FAST_MODE \
|
||||
| EXTRA_ESCAPE_MODE)
|
||||
| EXTRA_ESCAPE_MODE | GS1SYNTAXENGINE_MODE | GS1RAW_MODE)
|
||||
|
||||
#ifdef Z_FUZZ_SET_OUTPUT_OPTIONS
|
||||
#define OUTPUT_OPTIONS_MASK (BARCODE_BIND_TOP | BARCODE_BIND | BARCODE_BOX | BARCODE_STDOUT | READER_INIT \
|
||||
| SMALL_TEXT | BOLD_TEXT | CMYK_COLOUR | BARCODE_DOTTY_MODE | GS1_GS_SEPARATOR \
|
||||
| OUT_BUFFER_INTERMEDIATE | BARCODE_QUIET_ZONES | BARCODE_NO_QUIET_ZONES \
|
||||
| COMPLIANT_HEIGHT | EANUPC_GUARD_WHITESPACE | EMBED_VECTOR_FONT)
|
||||
#endif
|
||||
| COMPLIANT_HEIGHT | EANUPC_GUARD_WHITESPACE | EMBED_VECTOR_FONT \
|
||||
| BARCODE_CONTENT_SEGS) /* BARCODE_MEMORY_FILE always set */
|
||||
|
||||
/* Based on `z_not_sane()` flags in "backend/common.h") */
|
||||
#define IS_CTL_F (0x00000001) /* ASCII control (incl. DEL) */
|
||||
@@ -161,160 +160,160 @@ static int not_sane(const unsigned int flg, const unsigned char source[], const
|
||||
|
||||
struct settings_item {
|
||||
const int idx, symbology, sane_flag;
|
||||
const int option_1_min, option_1_max, option_2_min, option_2_max, option_3, len_min, len_max;
|
||||
const int option_1_min, option_1_max, option_2_min, option_2_max, option_3_min, option_3_max, len_min, len_max;
|
||||
};
|
||||
|
||||
static const struct settings_item settings[] = {
|
||||
{ 0, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 1, BARCODE_CODE11, SODIUM_MNS_F, 0, -1, 0, 2, 0, 1, 140 },
|
||||
{ 2, BARCODE_C25STANDARD, NEON_F, 0, -1, 0, 2, 0, 1, 112 },
|
||||
{ 3, BARCODE_C25INTER, NEON_F, 0, -1, 0, 2, 0, 1, 125 },
|
||||
{ 4, BARCODE_C25IATA, NEON_F, 0, -1, 0, 2, 0, 1, 80 },
|
||||
{ 5, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 6, BARCODE_C25LOGIC, NEON_F, 0, -1, 0, 2, 0, 1, 113 },
|
||||
{ 7, BARCODE_C25IND, NEON_F, 0, -1, 0, 2, 0, 1, 79 },
|
||||
{ 8, BARCODE_CODE39, SILVER_F, 0, -1, 0, 2, 0, 1, 86 },
|
||||
{ 9, BARCODE_EXCODE39, SILVER_F, 0, -1, 0, 2, 0, 1, 86 },
|
||||
{ 10, BARCODE_EAN8, SODIUM_PLS_F, 0, -1, 0, -1, 0, 1, 14 },
|
||||
{ 11, BARCODE_EAN_2ADDON, NEON_F, 0, -1, 0, -1, 0, 1, 2 },
|
||||
{ 12, BARCODE_EAN_5ADDON, NEON_F, 0, -1, 0, -1, 0, 1, 5 },
|
||||
{ 13, BARCODE_EANX, SODIUM_PLS_F, 0, -1, 0, -1, 0, 1, 19 },
|
||||
{ 14, BARCODE_EANX_CHK, SODIUM_PLS_F, 0, -1, 0, -1, 0, 1, 19 },
|
||||
{ 15, BARCODE_EAN13, SODIUM_PLS_F, 0, -1, 0, -1, 0, 1, 19 },
|
||||
{ 16, BARCODE_GS1_128, ASCII_PRT_F, 0, -1, 0, -1, 0, 3, 198 },
|
||||
{ 17, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 18, BARCODE_CODABAR, CALCIUM_F, 0, -1, 0, 2, 0, 3, 103 },
|
||||
{ 19, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 20, BARCODE_CODE128, 0, 0, -1, 0, -1, 0, 1, 198 },
|
||||
{ 21, BARCODE_DPLEIT, NEON_F, 0, -1, 0, -1, 0, 1, 13 },
|
||||
{ 22, BARCODE_DPIDENT, NEON_F, 0, -1, 0, -1, 0, 1, 11 },
|
||||
{ 23, BARCODE_CODE16K, 0, -1, 16, 0, -1, 0, 1, 154 },
|
||||
{ 24, BARCODE_CODE49, ASCII_F, 2, 8, 0, -1, 0, 1, 81 },
|
||||
{ 25, BARCODE_CODE93, ASCII_F, 0, -1, 0, 1, 0, 1, 123 },
|
||||
{ 26, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 27, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 28, BARCODE_FLAT, NEON_F, 0, -1, 0, -1, 0, 1, 128 },
|
||||
{ 29, BARCODE_DBAR_OMN, NEON_F, 0, -1, 0, -1, 0, 1, 14 },
|
||||
{ 30, BARCODE_DBAR_LTD, NEON_F, 0, -1, 0, -1, 0, 1, 14 },
|
||||
{ 31, BARCODE_DBAR_EXP, ASCII_PRT_F, 0, -1, 0, -1, 0, 3, 74 },
|
||||
{ 32, BARCODE_TELEPEN, ASCII_F, 0, -1, 0, -1, 0, 1, 69 },
|
||||
{ 33, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 34, BARCODE_UPCA, SODIUM_PLS_F, 0, -1, 0, -1, 0, 1, 18 },
|
||||
{ 35, BARCODE_UPCA_CHK, SODIUM_PLS_F, 0, -1, 0, -1, 0, 1, 18 },
|
||||
{ 36, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 37, BARCODE_UPCE, SODIUM_PLS_F, 0, -1, 0, -1, 0, 1, 14 },
|
||||
{ 38, BARCODE_UPCE_CHK, SODIUM_PLS_F, 0, -1, 0, -1, 0, 1, 14 },
|
||||
{ 39, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 40, BARCODE_POSTNET, NEON_F, 0, -1, 0, -1, 0, 1, 38 },
|
||||
{ 41, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 42, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 43, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 44, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 45, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 46, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 47, BARCODE_MSI_PLESSEY, NEON_F, 0, -1, 0, 16, 0, 1, 92 },
|
||||
{ 48, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 49, BARCODE_FIM, FIM_F, 0, -1, 0, -1, 0, 1, 1 },
|
||||
{ 50, BARCODE_LOGMARS, SILVER_F, 0, -1, 0, 2, 0, 1, 30 },
|
||||
{ 51, BARCODE_PHARMA, NEON_F, 0, -1, 0, -1, 0, 1, 6 },
|
||||
{ 52, BARCODE_PZN, NEON_F, 0, -1, 0, 1, 0, 1, 8 },
|
||||
{ 53, BARCODE_PHARMA_TWO, NEON_F, 0, -1, 0, -1, 0, 1, 8 },
|
||||
{ 54, BARCODE_CEPNET, NEON_F, 0, -1, 0, -1, 0, 8, 8 },
|
||||
{ 55, BARCODE_PDF417, 0, -1, 8, 0, 30, 0, 1, 2710 },
|
||||
{ 56, BARCODE_PDF417COMP, 0, -1, 8, 0, 30, 0, 1, 2710 },
|
||||
{ 57, BARCODE_MAXICODE, 0, -1, 6, 0, 100, 0, 1, 138 },
|
||||
{ 58, BARCODE_QRCODE, 0, -1, 4, 0, 40, ZINT_FULL_MULTIBYTE, 1, 7089 },
|
||||
{ 59, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 60, BARCODE_CODE128AB, 0, 0, -1, 0, -1, 0, 1, 99 },
|
||||
{ 61, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 62, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 63, BARCODE_AUSPOST, GDSET_F, 0, -1, 0, -1, 0, 8, 23 },
|
||||
{ 64, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 65, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 66, BARCODE_AUSREPLY, GDSET_F, 0, -1, 0, -1, 0, 1, 8 },
|
||||
{ 67, BARCODE_AUSROUTE, GDSET_F, 0, -1, 0, -1, 0, 1, 8 },
|
||||
{ 68, BARCODE_AUSREDIRECT, GDSET_F, 0, -1, 0, -1, 0, 1, 8 },
|
||||
{ 69, BARCODE_ISBNX, ISBNX_ADDON_SANE_F, 0, -1, 0, -1, 0, 9, 19 },
|
||||
{ 70, BARCODE_RM4SCC, KRSET_F, 0, -1, 0, -1, 0, 1, 50 },
|
||||
{ 71, BARCODE_DATAMATRIX, 0, 0, -1, 0, 48, DM_SQUARE | DM_ISO_144, 1, 3550 },
|
||||
{ 72, BARCODE_EAN14, NEON_F, 0, -1, 0, -1, 0, 1, 13 },
|
||||
{ 73, BARCODE_VIN, ARSENIC_F, 0, -1, 0, -1, 0, 17, 17 },
|
||||
{ 74, BARCODE_CODABLOCKF, 0, -1, 44, -1, 67, 0, 1, 2725 },
|
||||
{ 75, BARCODE_NVE18, NEON_F, 0, -1, 0, -1, 0, 1, 17 },
|
||||
{ 76, BARCODE_JAPANPOST, SHKASUTSET_F, 0, -1, 0, -1, 0, 1, 20 },
|
||||
{ 77, BARCODE_KOREAPOST, NEON_F, 0, -1, 0, -1, 0, 1, 6 },
|
||||
{ 78, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 79, BARCODE_DBAR_STK, NEON_F, 0, -1, 0, -1, 0, 1, 14 },
|
||||
{ 80, BARCODE_DBAR_OMNSTK, NEON_F, 0, -1, 0, -1, 0, 1, 14 },
|
||||
{ 81, BARCODE_DBAR_EXPSTK, ASCII_PRT_F, 0, -1, 0, 11, 0, 1, 74 },
|
||||
{ 82, BARCODE_PLANET, NEON_F, 0, -1, 0, -1, 0, 1, 38 },
|
||||
{ 83, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 84, BARCODE_MICROPDF417, 0, 0, -1, 0, 30, 0, 1, 366 },
|
||||
{ 85, BARCODE_USPS_IMAIL, SODIUM_MNS_F, 0, -1, 0, -1, 0, 1, 32 },
|
||||
{ 86, BARCODE_PLESSEY, SSET_F, 0, -1, 0, -1, 0, 1, 67 },
|
||||
{ 87, BARCODE_TELEPEN_NUM, SODIUM_X_F, 0, -1, 0, -1, 0, 1, 136 },
|
||||
{ 88, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 89, BARCODE_ITF14, NEON_F, 0, -1, 0, -1, 0, 1, 13 },
|
||||
{ 90, BARCODE_KIX, KRSET_F, 0, -1, 0, -1, 0, 1, 18 },
|
||||
{ 91, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 92, BARCODE_AZTEC, 0, -1, 4, 0, 36, 0, 1, 4483 },
|
||||
{ 93, BARCODE_DAFT, DAFT_F, 0, -1, 50, 900, 0, 1, 576 },
|
||||
{ 94, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 95, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 96, BARCODE_DPD, KRSET_F, 0, -1, 0, -1, 0, 27, 28 },
|
||||
{ 97, BARCODE_MICROQR, 0, -1, 4, 0, 4, 0, 1, 35 },
|
||||
{ 98, BARCODE_HIBC_128, SILVER_F, 0, -1, 0, -1, 0, 1, 110 },
|
||||
{ 99, BARCODE_HIBC_39, SILVER_F, 0, -1, 0, 2, 0, 1, 70 },
|
||||
{ 100, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 101, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 102, BARCODE_HIBC_DM, SILVER_F, 0, -1, 0, 48, DM_SQUARE | DM_ISO_144, 1, 110 },
|
||||
{ 103, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 104, BARCODE_HIBC_QR, SILVER_F, -1, 4, 0, 40, ZINT_FULL_MULTIBYTE, 1, 110 },
|
||||
{ 105, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 106, BARCODE_HIBC_PDF, SILVER_F, -1, 8, 0, 30, 0, 1, 110 },
|
||||
{ 107, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 108, BARCODE_HIBC_MICPDF, SILVER_F, 0, -1, 0, 30, 0, 1, 110 },
|
||||
{ 109, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 110, BARCODE_HIBC_BLOCKF, SILVER_F, -1, 44, -1, 67, 0, 1, 110 },
|
||||
{ 111, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 112, BARCODE_HIBC_AZTEC, SILVER_F, -1, 4, 0, 36, 0, 1, 110 },
|
||||
{ 113, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 114, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 115, BARCODE_DOTCODE, 0, 0, -1, 0, 200, 0, 1, 900 },
|
||||
{ 116, BARCODE_HANXIN, 0, -1, 5, 0, 84, ZINT_FULL_MULTIBYTE, 1, 7827 },
|
||||
{ 117, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 118, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 119, BARCODE_MAILMARK_2D, RUBIDIUM_F, 0, -1, 0, 30, DM_SQUARE | DM_ISO_144, 28, 90 },
|
||||
{ 120, BARCODE_UPU_S10, KRSET_F, 0, -1, 0, -1, 0, 12, 13 },
|
||||
{ 121, BARCODE_MAILMARK_4S, RUBIDIUM_F, 0, -1, 0, -1, 0, 14, 26 },
|
||||
{ 122, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 123, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 124, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 125, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 126, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 127, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, /*len*/ 0, -1 },
|
||||
{ 128, BARCODE_AZRUNE, NEON_F, 0, -1, 0, -1, 0, 1, 3 },
|
||||
{ 129, BARCODE_CODE32, NEON_F, 0, -1, 0, -1, 0, 1, 8 },
|
||||
{ 130, BARCODE_EANX_CC, SODIUM_PLS_F, 0, 2, 0, -1, 0, 1, 338 },
|
||||
{ 131, BARCODE_GS1_128_CC, ASCII_PRT_F, 0, 3, 0, -1, 0, 1, 2361 },
|
||||
{ 132, BARCODE_DBAR_OMN_CC, NEON_F, 0, 2, 0, -1, 0, 1, 338 },
|
||||
{ 133, BARCODE_DBAR_LTD_CC, NEON_F, 0, 2, 0, -1, 0, 1, 338 },
|
||||
{ 134, BARCODE_DBAR_EXP_CC, ASCII_PRT_F, 0, 2, 0, -1, 0, 1, 338 },
|
||||
{ 135, BARCODE_UPCA_CC, SODIUM_PLS_F, 0, 2, 0, -1, 0, 1, 338 },
|
||||
{ 136, BARCODE_UPCE_CC, SODIUM_PLS_F, 0, 2, 0, -1, 0, 1, 338 },
|
||||
{ 137, BARCODE_DBAR_STK_CC, NEON_F, 0, 2, 0, -1, 0, 1, 338 },
|
||||
{ 138, BARCODE_DBAR_OMNSTK_CC, NEON_F, 0, 2, 0, -1, 0, 1, 338 },
|
||||
{ 139, BARCODE_DBAR_EXPSTK_CC, ASCII_PRT_F, 0, 2, 0, 11, 0, 1, 338 },
|
||||
{ 140, BARCODE_CHANNEL, NEON_F, 0, -1, 3, 8, 0, 1, 7 },
|
||||
{ 141, BARCODE_CODEONE, 0, 0, -1, 0, 10, 0, 1, 3550 },
|
||||
{ 142, BARCODE_GRIDMATRIX, 0, 0, 5, 0, 13, ZINT_FULL_MULTIBYTE, 1, 1751 },
|
||||
{ 143, BARCODE_UPNQR, 0, 0, -1, 0, -1, ZINT_FULL_MULTIBYTE, 1, 411 },
|
||||
{ 144, BARCODE_ULTRA, 0, -1, 5, 0, 2, ULTRA_COMPRESSION, 1, 504 },
|
||||
{ 145, BARCODE_RMQR, 0, -1, 4, 0, 38, 0, 1, 361 },
|
||||
{ 146, BARCODE_BC412, ARSENIC_F, 0, -1, 0, -1, 0, 7, 18 },
|
||||
{ 147, BARCODE_DXFILMEDGE, SILVER_F, 0, -1, 0, -1, 0, 1, 10 },
|
||||
{ 148, BARCODE_EAN8_CC, SODIUM_PLS_F, 0, 2, 0, -1, 0, 1, 335 },
|
||||
{ 149, BARCODE_EAN13_CC, SODIUM_PLS_F, 0, 2, 0, -1, 0, 1, 338 },
|
||||
{ 0, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 1, BARCODE_CODE11, SODIUM_MNS_F, 0, -1, 0, 2, 0, -1, 1, 140 },
|
||||
{ 2, BARCODE_C25STANDARD, NEON_F, 0, -1, 0, 2, 0, -1, 1, 112 },
|
||||
{ 3, BARCODE_C25INTER, NEON_F, 0, -1, 0, 2, 0, -1, 1, 125 },
|
||||
{ 4, BARCODE_C25IATA, NEON_F, 0, -1, 0, 2, 0, -1, 1, 80 },
|
||||
{ 5, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 6, BARCODE_C25LOGIC, NEON_F, 0, -1, 0, 2, 0, -1, 1, 113 },
|
||||
{ 7, BARCODE_C25IND, NEON_F, 0, -1, 0, 2, 0, -1, 1, 79 },
|
||||
{ 8, BARCODE_CODE39, SILVER_F, 0, -1, 0, 2, 0, -1, 1, 86 },
|
||||
{ 9, BARCODE_EXCODE39, SILVER_F, 0, -1, 0, 2, 0, -1, 1, 86 },
|
||||
{ 10, BARCODE_EAN8, SODIUM_PLS_F, 0, -1, 0, -1, 0, -1, 1, 14 },
|
||||
{ 11, BARCODE_EAN_2ADDON, NEON_F, 0, -1, 0, -1, 0, -1, 1, 2 },
|
||||
{ 12, BARCODE_EAN_5ADDON, NEON_F, 0, -1, 0, -1, 0, -1, 1, 5 },
|
||||
{ 13, BARCODE_EANX, SODIUM_PLS_F, 0, -1, 0, -1, 0, -1, 1, 19 },
|
||||
{ 14, BARCODE_EANX_CHK, SODIUM_PLS_F, 0, -1, 0, -1, 0, -1, 1, 19 },
|
||||
{ 15, BARCODE_EAN13, SODIUM_PLS_F, 0, -1, 0, -1, 0, -1, 1, 19 },
|
||||
{ 16, BARCODE_GS1_128, ASCII_PRT_F, 0, -1, 0, -1, 0, -1, 3, 198 },
|
||||
{ 17, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 18, BARCODE_CODABAR, CALCIUM_F, 0, -1, 0, 2, 0, -1, 3, 103 },
|
||||
{ 19, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 20, BARCODE_CODE128, 0, 0, -1, 0, -1, 0, -1, 1, 198 },
|
||||
{ 21, BARCODE_DPLEIT, NEON_F, 0, -1, 0, -1, 0, -1, 1, 13 },
|
||||
{ 22, BARCODE_DPIDENT, NEON_F, 0, -1, 0, -1, 0, -1, 1, 11 },
|
||||
{ 23, BARCODE_CODE16K, 0, -1, 16, 0, -1, 0, 4, 1, 154 },
|
||||
{ 24, BARCODE_CODE49, ASCII_F, 2, 8, 0, -1, 1, 4, 1, 81 },
|
||||
{ 25, BARCODE_CODE93, ASCII_F, 0, -1, 0, 1, 0, -1, 1, 123 },
|
||||
{ 26, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 27, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 28, BARCODE_FLAT, NEON_F, 0, -1, 0, -1, 0, -1, 1, 128 },
|
||||
{ 29, BARCODE_DBAR_OMN, NEON_F, 0, -1, 0, -1, 0, -1, 1, 14 },
|
||||
{ 30, BARCODE_DBAR_LTD, NEON_F, 0, -1, 0, -1, 0, -1, 1, 14 },
|
||||
{ 31, BARCODE_DBAR_EXP, ASCII_PRT_F, 0, -1, 0, -1, 0, -1, 3, 74 },
|
||||
{ 32, BARCODE_TELEPEN, ASCII_F, 0, -1, 0, -1, 0, -1, 1, 69 },
|
||||
{ 33, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 34, BARCODE_UPCA, SODIUM_PLS_F, 0, -1, 0, -1, 0, -1, 1, 18 },
|
||||
{ 35, BARCODE_UPCA_CHK, SODIUM_PLS_F, 0, -1, 0, -1, 0, -1, 1, 18 },
|
||||
{ 36, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 37, BARCODE_UPCE, SODIUM_PLS_F, 0, -1, 0, -1, 0, -1, 1, 14 },
|
||||
{ 38, BARCODE_UPCE_CHK, SODIUM_PLS_F, 0, -1, 0, -1, 0, -1, 1, 14 },
|
||||
{ 39, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 40, BARCODE_POSTNET, NEON_F, 0, -1, 0, -1, 0, -1, 1, 38 },
|
||||
{ 41, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 42, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 43, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 44, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 45, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 46, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 47, BARCODE_MSI_PLESSEY, NEON_F, 0, -1, 0, 16, 0, -1, 1, 92 },
|
||||
{ 48, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 49, BARCODE_FIM, FIM_F, 0, -1, 0, -1, 0, -1, 1, 1 },
|
||||
{ 50, BARCODE_LOGMARS, SILVER_F, 0, -1, 0, 2, 0, -1, 1, 30 },
|
||||
{ 51, BARCODE_PHARMA, NEON_F, 0, -1, 0, -1, 0, -1, 1, 6 },
|
||||
{ 52, BARCODE_PZN, NEON_F, 0, -1, 0, 1, 0, -1, 1, 8 },
|
||||
{ 53, BARCODE_PHARMA_TWO, NEON_F, 0, -1, 0, -1, 0, -1, 1, 8 },
|
||||
{ 54, BARCODE_CEPNET, NEON_F, 0, -1, 0, -1, 0, -1, 8, 8 },
|
||||
{ 55, BARCODE_PDF417, 0, -1, 8, 0, 30, 1, 4, 1, 2710 },
|
||||
{ 56, BARCODE_PDF417COMP, 0, -1, 8, 0, 30, 4, 4, 1, 2710 },
|
||||
{ 57, BARCODE_MAXICODE, 0, -1, 6, 0, 100, 0, -1, 1, 138 },
|
||||
{ 58, BARCODE_QRCODE, 0, -1, 4, 0, 40, 200, 200, 1, 7089 },
|
||||
{ 59, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 60, BARCODE_CODE128AB, 0, 0, -1, 0, -1, 0, -1, 1, 99 },
|
||||
{ 61, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 62, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 63, BARCODE_AUSPOST, GDSET_F, 0, -1, 0, -1, 0, -1, 8, 23 },
|
||||
{ 64, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 65, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 66, BARCODE_AUSREPLY, GDSET_F, 0, -1, 0, -1, 0, -1, 1, 8 },
|
||||
{ 67, BARCODE_AUSROUTE, GDSET_F, 0, -1, 0, -1, 0, -1, 1, 8 },
|
||||
{ 68, BARCODE_AUSREDIRECT, GDSET_F, 0, -1, 0, -1, 0, -1, 1, 8 },
|
||||
{ 69, BARCODE_ISBNX, ISBNX_ADDON_SANE_F, 0, -1, 0, -1, 0, -1, 9, 19 },
|
||||
{ 70, BARCODE_RM4SCC, KRSET_F, 0, -1, 0, -1, 0, -1, 1, 50 },
|
||||
{ 71, BARCODE_DATAMATRIX, 0, 0, -1, 0, 48, 128, 128, 1, 3550 },
|
||||
{ 72, BARCODE_EAN14, NEON_F, 0, -1, 0, -1, 0, -1, 1, 13 },
|
||||
{ 73, BARCODE_VIN, ARSENIC_F, 0, -1, 0, -1, 0, -1, 17, 17 },
|
||||
{ 74, BARCODE_CODABLOCKF, 0, -1, 44, -1, 67, 4, 4, 1, 2725 },
|
||||
{ 75, BARCODE_NVE18, NEON_F, 0, -1, 0, -1, 0, -1, 1, 17 },
|
||||
{ 76, BARCODE_JAPANPOST, SHKASUTSET_F, 0, -1, 0, -1, 0, -1, 1, 20 },
|
||||
{ 77, BARCODE_KOREAPOST, NEON_F, 0, -1, 0, -1, 0, -1, 1, 6 },
|
||||
{ 78, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 79, BARCODE_DBAR_STK, NEON_F, 0, -1, 0, -1, 0, -1, 1, 14 },
|
||||
{ 80, BARCODE_DBAR_OMNSTK, NEON_F, 0, -1, 0, -1, 0, -1, 1, 14 },
|
||||
{ 81, BARCODE_DBAR_EXPSTK, ASCII_PRT_F, 0, -1, 0, 11, 0, -1, 1, 74 },
|
||||
{ 82, BARCODE_PLANET, NEON_F, 0, -1, 0, -1, 0, -1, 1, 38 },
|
||||
{ 83, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 84, BARCODE_MICROPDF417, 0, 0, -1, 0, 30, 4, 4, 1, 366 },
|
||||
{ 85, BARCODE_USPS_IMAIL, SODIUM_MNS_F, 0, -1, 0, -1, 0, -1, 1, 32 },
|
||||
{ 86, BARCODE_PLESSEY, SSET_F, 0, -1, 0, -1, 0, -1, 1, 67 },
|
||||
{ 87, BARCODE_TELEPEN_NUM, SODIUM_X_F, 0, -1, 0, -1, 0, -1, 1, 136 },
|
||||
{ 88, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 89, BARCODE_ITF14, NEON_F, 0, -1, 0, -1, 0, 4, 1, 13 },
|
||||
{ 90, BARCODE_KIX, KRSET_F, 0, -1, 0, -1, 0, -1, 1, 18 },
|
||||
{ 91, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 92, BARCODE_AZTEC, 0, -1, 4, 0, 36, 128, 128, 1, 4483 },
|
||||
{ 93, BARCODE_DAFT, DAFT_F, 0, -1, 50, 900, 0, -1, 1, 576 },
|
||||
{ 94, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 95, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 96, BARCODE_DPD, KRSET_F, 0, -1, 0, -1, 0, 4, 27, 28 },
|
||||
{ 97, BARCODE_MICROQR, 0, -1, 4, 0, 4, 0, -1, 1, 35 },
|
||||
{ 98, BARCODE_HIBC_128, SILVER_F, 0, -1, 0, -1, 0, -1, 1, 110 },
|
||||
{ 99, BARCODE_HIBC_39, SILVER_F, 0, -1, 0, 2, 0, -1, 1, 70 },
|
||||
{ 100, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 101, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 102, BARCODE_HIBC_DM, SILVER_F, 0, -1, 0, 48, 100, 101, 1, 110 },
|
||||
{ 103, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 104, BARCODE_HIBC_QR, SILVER_F, -1, 4, 0, 40, 200, 200, 1, 110 },
|
||||
{ 105, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 106, BARCODE_HIBC_PDF, SILVER_F, -1, 8, 0, 30, 0, -1, 1, 110 },
|
||||
{ 107, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 108, BARCODE_HIBC_MICPDF, SILVER_F, 0, -1, 0, 30, 0, -1, 1, 110 },
|
||||
{ 109, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 110, BARCODE_HIBC_BLOCKF, SILVER_F, -1, 44, -1, 67, 0, -1, 1, 110 },
|
||||
{ 111, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 112, BARCODE_HIBC_AZTEC, SILVER_F, -1, 4, 0, 36, 128, 128, 1, 110 },
|
||||
{ 113, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 114, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 115, BARCODE_DOTCODE, 0, 0, -1, 0, 200, 0, -1, 1, 900 },
|
||||
{ 116, BARCODE_HANXIN, 0, -1, 5, 0, 84, 200, 200, 1, 7827 },
|
||||
{ 117, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 118, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 119, BARCODE_MAILMARK_2D, RUBIDIUM_F, 0, -1, 0, 30, 100, 101, 28, 90 },
|
||||
{ 120, BARCODE_UPU_S10, KRSET_F, 0, -1, 0, -1, 0, -1, 12, 13 },
|
||||
{ 121, BARCODE_MAILMARK_4S, RUBIDIUM_F, 0, -1, 0, -1, 0, -1, 14, 26 },
|
||||
{ 122, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 123, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 124, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 125, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 126, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 127, /*symbology*/ -1, /*sane_flag*/ 0, /*opt_1*/ 0, -1, /*opt_2*/ 0, -1, /*opt_3*/ 0, -1, /*len*/ 0, -1 },
|
||||
{ 128, BARCODE_AZRUNE, NEON_F, 0, -1, 0, -1, 0, -1, 1, 3 },
|
||||
{ 129, BARCODE_CODE32, NEON_F, 0, -1, 0, -1, 0, -1, 1, 8 },
|
||||
{ 130, BARCODE_EANX_CC, SODIUM_PLS_F, 0, 2, 0, -1, 0, -1, 1, 338 },
|
||||
{ 131, BARCODE_GS1_128_CC, ASCII_PRT_F, 0, 3, 0, -1, 0, -1, 1, 2361 },
|
||||
{ 132, BARCODE_DBAR_OMN_CC, NEON_F, 0, 2, 0, -1, 0, -1, 1, 338 },
|
||||
{ 133, BARCODE_DBAR_LTD_CC, NEON_F, 0, 2, 0, -1, 0, -1, 1, 338 },
|
||||
{ 134, BARCODE_DBAR_EXP_CC, ASCII_PRT_F, 0, 2, 0, -1, 0, -1, 1, 338 },
|
||||
{ 135, BARCODE_UPCA_CC, SODIUM_PLS_F, 0, 2, 0, -1, 0, -1, 1, 338 },
|
||||
{ 136, BARCODE_UPCE_CC, SODIUM_PLS_F, 0, 2, 0, -1, 0, -1, 1, 338 },
|
||||
{ 137, BARCODE_DBAR_STK_CC, NEON_F, 0, 2, 0, -1, 0, -1, 1, 338 },
|
||||
{ 138, BARCODE_DBAR_OMNSTK_CC, NEON_F, 0, 2, 0, -1, 0, -1, 1, 338 },
|
||||
{ 139, BARCODE_DBAR_EXPSTK_CC, ASCII_PRT_F, 0, 2, 0, 11, 0, -1, 1, 338 },
|
||||
{ 140, BARCODE_CHANNEL, NEON_F, 0, -1, 3, 8, 0, -1, 1, 7 },
|
||||
{ 141, BARCODE_CODEONE, 0, 0, -1, 0, 10, 0, -1, 1, 3550 },
|
||||
{ 142, BARCODE_GRIDMATRIX, 0, 0, 5, 0, 13, 200, 200, 1, 1751 },
|
||||
{ 143, BARCODE_UPNQR, 0, 0, -1, 0, -1, 200, 200, 1, 411 },
|
||||
{ 144, BARCODE_ULTRA, 0, -1, 5, 0, 2, 128, 128, 1, 504 },
|
||||
{ 145, BARCODE_RMQR, 0, -1, 4, 0, 38, 0, -1, 1, 361 },
|
||||
{ 146, BARCODE_BC412, ARSENIC_F, 0, -1, 0, -1, 0, -1, 7, 18 },
|
||||
{ 147, BARCODE_DXFILMEDGE, SILVER_F, 0, -1, 0, -1, 0, -1, 1, 10 },
|
||||
{ 148, BARCODE_EAN8_CC, SODIUM_PLS_F, 0, 2, 0, -1, 0, -1, 1, 335 },
|
||||
{ 149, BARCODE_EAN13_CC, SODIUM_PLS_F, 0, 2, 0, -1, 0, -1, 1, 338 },
|
||||
};
|
||||
|
||||
/* Make sure value `v` is between `min` and `max` */
|
||||
@@ -383,18 +382,29 @@ static int set_symbol(struct zint_symbol *symbol, const int idx, const int chk_s
|
||||
}
|
||||
}
|
||||
/* `option_3` */
|
||||
if (length > si->len_min && si->option_3) {
|
||||
if (*input++ & 1) { /* Odd/even */
|
||||
symbol->option_3 = si->option_3;
|
||||
if (length > si->len_min && (si->option_3_min <= si->option_3_max)) {
|
||||
if (si->option_3_min + 1 == si->option_3_max) { /* Only one in it? */
|
||||
symbol->option_3 = (*input++ & 1) ? si->option_3_min : si->option_3_max; /* Odd/even */
|
||||
} else {
|
||||
symbol->option_3 = clamp(*input++, si->option_3_min, si->option_3_max);
|
||||
}
|
||||
length--;
|
||||
}
|
||||
#ifdef Z_FUZZ_SET_OUTPUT_OPTIONS
|
||||
/* `height` */
|
||||
if (length > si->len_min && !(ZBarcode_Cap(symbol->symbology, ZINT_CAP_FIXED_RATIO) & ZINT_CAP_FIXED_RATIO)) {
|
||||
symbol->height = *input++;
|
||||
length--;
|
||||
}
|
||||
/* `border_width` */
|
||||
if (length > si->len_min) {
|
||||
symbol->border_width = *input++;
|
||||
length--;
|
||||
}
|
||||
/* `output_options` */
|
||||
if (length > si->len_min) {
|
||||
symbol->output_options = *input++ & OUTPUT_OPTIONS_MASK;
|
||||
length--;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (length > si->len_max) {
|
||||
return 0;
|
||||
@@ -414,5 +424,54 @@ static int set_symbol(struct zint_symbol *symbol, const int idx, const int chk_s
|
||||
return length;
|
||||
}
|
||||
|
||||
/* Boilerplate for stand-alone testing of "fuzz_data" and "fuzz_gs1" to take single corpus file when
|
||||
`Z_FUZZ_MAIN` defined */
|
||||
#define Z_FUZZ_MAIN_READ_ARGV_1(idx, buf) \
|
||||
int main(int argc, char *argv[]) { \
|
||||
unsigned char data[16384]; \
|
||||
size_t size = 0; \
|
||||
struct zint_symbol *symbol; \
|
||||
int idx; \
|
||||
unsigned char *buf; \
|
||||
{ \
|
||||
long fsize; \
|
||||
size_t n; \
|
||||
FILE *fp; \
|
||||
if (argc != 2) { \
|
||||
fprintf(stderr, "usage: <corpus-filename>\n"); \
|
||||
return -1; \
|
||||
} \
|
||||
if (!(fp = fopen(argv[1], "rb"))) { \
|
||||
fprintf(stderr, "failed to open input file \"%s\" (%d, %s)\n", argv[1], errno, strerror(errno)); \
|
||||
return -1; \
|
||||
} \
|
||||
if (fseek(fp, 0, SEEK_END) != 0 \
|
||||
|| (fsize = ftell(fp)) <= 0 || fsize == LONG_MAX \
|
||||
|| fseek(fp, 0, SEEK_SET) != 0) { \
|
||||
fprintf(stderr, "failed to seek input file \"%s\" (%d, %s)\n", argv[1], errno, strerror(errno)); \
|
||||
return -1; \
|
||||
} \
|
||||
if (fsize > (long) sizeof(data)) { \
|
||||
fprintf(stderr, "Input file \"%s\" too big, file size %d, buffer max %d\n", argv[1], \
|
||||
(int) fsize, (int) sizeof(data)); \
|
||||
return -1; \
|
||||
} \
|
||||
do { \
|
||||
n = fread(data + size, 1, fsize - size, fp); \
|
||||
if (ferror(fp)) { \
|
||||
fprintf(stderr, "Input file \"%s\" read error (%d: %s)", argv[1], errno, strerror(errno)); \
|
||||
(void) fclose(fp); \
|
||||
return -1; \
|
||||
} \
|
||||
size += n; \
|
||||
} while (!feof(fp) && n > 0 && (long) size < fsize); \
|
||||
(void) fclose(fp); \
|
||||
if ((long) size != fsize) { \
|
||||
fprintf(stderr, "Failed to fully read input file \"%s\" read %d, file size %d\n", \
|
||||
argv[1], (int) size, (int) fsize); \
|
||||
return -1; \
|
||||
} \
|
||||
}
|
||||
|
||||
/* vim: set ts=4 sw=4 et : */
|
||||
#endif /* Z_FUZZ_H */
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* fuzz_data.c - fuzzer for libzint (DATA_MODE, all symbologies except GS1_128, DBAR_EXP/STK & composites) */
|
||||
/*
|
||||
libzint - the open source barcode library
|
||||
Copyright (C) 2024 Robin Stuart <rstuart114@gmail.com>
|
||||
Copyright (C) 2024-2026 Robin Stuart <rstuart114@gmail.com>
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
@@ -36,13 +36,24 @@ extern "C" {
|
||||
|
||||
#if 0
|
||||
#define Z_FUZZ_DEBUG /* Set `symbol->debug` flag */
|
||||
#define Z_FUZZ_SET_OUTPUT_OPTIONS /* Set `symbol->output_options` */
|
||||
#endif
|
||||
#include "fuzz.h"
|
||||
|
||||
#if Z_FUZZ_MAIN
|
||||
/* For testing that a corpus file reproduces a bug:
|
||||
cc -g -O0 -DZ_FUZZ_MAIN fuzz_data.c -o fuzz_data -lzint -fsanitize=address
|
||||
./fuzz_data <corpus-file>
|
||||
*/
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
Z_FUZZ_MAIN_READ_ARGV_1(idx, buf)
|
||||
#else
|
||||
int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
|
||||
struct zint_symbol *symbol;
|
||||
int idx;
|
||||
unsigned char *buf; /* Dummy, used by "fuzz_gs1.c" */
|
||||
#endif
|
||||
(void)buf;
|
||||
|
||||
/* Ignore empty or very large input */
|
||||
if (size < 1 || size > 10000) {
|
||||
@@ -70,8 +81,9 @@ int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
|
||||
if (!length) {
|
||||
continue;
|
||||
}
|
||||
symbol->output_options |= BARCODE_MEMORY_FILE;
|
||||
|
||||
ret = ZBarcode_Encode(symbol, input, length);
|
||||
ret = ZBarcode_Encode_and_Print(symbol, input, length, 0 /*rotate_angle*/);
|
||||
assert(ret != ZINT_ERROR_ENCODING_PROBLEM);
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
@@ -36,20 +36,30 @@ extern "C" {
|
||||
|
||||
#if 0
|
||||
#define Z_FUZZ_DEBUG /* Set `symbol->debug` flag */
|
||||
#define Z_FUZZ_SET_OUTPUT_OPTIONS /* Set `symbol->output_options` */
|
||||
#endif
|
||||
#include "fuzz.h"
|
||||
|
||||
static const int symbologies[] = {
|
||||
BARCODE_AZTEC, BARCODE_CODE16K, BARCODE_CODE49, BARCODE_CODEONE, BARCODE_DATAMATRIX, BARCODE_DBAR_EXP,
|
||||
BARCODE_DBAR_EXPSTK, BARCODE_DOTCODE, BARCODE_GS1_128, BARCODE_QRCODE, BARCODE_RMQR, BARCODE_ULTRA,
|
||||
BARCODE_EANX_CC, BARCODE_GS1_128_CC, BARCODE_DBAR_OMN_CC, BARCODE_DBAR_LTD_CC, BARCODE_DBAR_EXP_CC,
|
||||
BARCODE_UPCA_CC, BARCODE_UPCE_CC, BARCODE_DBAR_STK_CC, BARCODE_DBAR_OMNSTK_CC, BARCODE_DBAR_EXPSTK_CC,
|
||||
};
|
||||
|
||||
#if Z_FUZZ_MAIN
|
||||
/* For testing that a corpus file reproduces a bug:
|
||||
cc -g -O0 -DZ_FUZZ_MAIN fuzz_gs1.c -o fuzz_data -lzint -fsanitize=address
|
||||
./fuzz_gs1 <corpus-file>
|
||||
*/
|
||||
#include <errno.h>
|
||||
#include <limits.h>
|
||||
Z_FUZZ_MAIN_READ_ARGV_1(i, gs1_buf)
|
||||
#else
|
||||
int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
|
||||
static const int symbologies[] = {
|
||||
BARCODE_AZTEC, BARCODE_CODE16K, BARCODE_CODE49, BARCODE_CODEONE, BARCODE_DATAMATRIX, BARCODE_DBAR_EXP,
|
||||
BARCODE_DBAR_EXPSTK, BARCODE_DOTCODE, BARCODE_GS1_128, BARCODE_QRCODE, BARCODE_RMQR, BARCODE_ULTRA,
|
||||
BARCODE_EANX_CC, BARCODE_GS1_128_CC, BARCODE_DBAR_OMN_CC, BARCODE_DBAR_LTD_CC, BARCODE_DBAR_EXP_CC,
|
||||
BARCODE_UPCA_CC, BARCODE_UPCE_CC, BARCODE_DBAR_STK_CC, BARCODE_DBAR_OMNSTK_CC, BARCODE_DBAR_EXPSTK_CC,
|
||||
};
|
||||
struct zint_symbol *symbol;
|
||||
unsigned char *gs1_buf;
|
||||
int i;
|
||||
unsigned char *gs1_buf;
|
||||
#endif
|
||||
|
||||
/* Ignore empty or very large input */
|
||||
if (size < 1 || size > 10000) {
|
||||
@@ -65,12 +75,16 @@ int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
|
||||
gs1_buf[1] = ']';
|
||||
|
||||
for (i = 0; i < ZARRAY_SIZE(symbologies); i++) {
|
||||
static const char primary_ai_raw[] = "0112345678901231";
|
||||
static const char primary_ai_caret[] = "^0112345678901231";
|
||||
static const char primary_ai_parens[] = "(01)12345678901231";
|
||||
static const char primary_ai[] = "[01]12345678901231";
|
||||
static const char primary_upce[] = "12345670";
|
||||
static const char primary[] = "123456789012";
|
||||
const int idx = symbologies[i];
|
||||
const int is_composite = ZBarcode_Cap(idx, ZINT_CAP_COMPOSITE) & ZINT_CAP_COMPOSITE;
|
||||
const unsigned char *input;
|
||||
int input_mode;
|
||||
int length;
|
||||
int ret;
|
||||
|
||||
@@ -81,10 +95,21 @@ int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
|
||||
if (!length) {
|
||||
continue;
|
||||
}
|
||||
input_mode = symbol->input_mode;
|
||||
|
||||
symbol->output_options |= BARCODE_MEMORY_FILE;
|
||||
|
||||
if (is_composite) {
|
||||
if (idx == BARCODE_GS1_128_CC || idx == BARCODE_DBAR_EXP_CC || idx == BARCODE_DBAR_EXPSTK_CC) {
|
||||
memcpy(symbol->primary, primary_ai, sizeof(primary_ai));
|
||||
if (input_mode & GS1RAW_MODE) {
|
||||
memcpy(symbol->primary, primary_ai_raw, sizeof(primary_ai_raw));
|
||||
} else if (input[0] == '^') {
|
||||
memcpy(symbol->primary, primary_ai_caret, sizeof(primary_ai_caret));
|
||||
} else if (input_mode & GS1PARENS_MODE) {
|
||||
memcpy(symbol->primary, primary_ai_parens, sizeof(primary_ai_parens));
|
||||
} else {
|
||||
memcpy(symbol->primary, primary_ai, sizeof(primary_ai));
|
||||
}
|
||||
} else if (idx == BARCODE_UPCE_CC) {
|
||||
memcpy(symbol->primary, primary_upce, sizeof(primary_upce));
|
||||
} else {
|
||||
@@ -92,21 +117,21 @@ int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
|
||||
}
|
||||
}
|
||||
|
||||
/* Try it first without GS1NOCHECK_MODE */
|
||||
symbol->input_mode = (symbol->input_mode & ~0x07) | GS1_MODE;
|
||||
/* Try it first with GS1NOCHECK_MODE */
|
||||
symbol->input_mode = (input_mode & ~0x07) | GS1_MODE | GS1NOCHECK_MODE;
|
||||
|
||||
ret = ZBarcode_Encode(symbol, input, length);
|
||||
ret = ZBarcode_Encode_and_Print(symbol, input, length, 0 /*rotate_angle*/);
|
||||
assert(ret != ZINT_ERROR_ENCODING_PROBLEM);
|
||||
|
||||
ZBarcode_Clear(symbol);
|
||||
|
||||
/* Now with GS1NOCHECK_MODE */
|
||||
symbol->input_mode = (symbol->input_mode & ~0x07) | GS1_MODE | GS1NOCHECK_MODE;
|
||||
symbol->input_mode &= ~GS1PARENS_MODE;
|
||||
/* Now without GS1NOCHECK_MODE */
|
||||
symbol->input_mode = (input_mode & ~0x07) | GS1_MODE;
|
||||
symbol->input_mode &= ~GS1NOCHECK_MODE;
|
||||
|
||||
memcpy(gs1_buf + 2, input, length);
|
||||
|
||||
ret = ZBarcode_Encode(symbol, gs1_buf, length + 2);
|
||||
ret = ZBarcode_Encode_and_Print(symbol, gs1_buf, length + 2, 90 * (size % 3) /*rotate_angle*/);
|
||||
assert(ret != ZINT_ERROR_ENCODING_PROBLEM);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
"[10]"
|
||||
"[91]"
|
||||
"^"
|
||||
"^10"
|
||||
"^91"
|
||||
"10"
|
||||
"91"
|
||||
"\x1D"
|
||||
"%"
|
||||
"%%"
|
||||
"[01]"
|
||||
"[10]"
|
||||
"[15]"
|
||||
"[17]"
|
||||
"[20]"
|
||||
"[3103]"
|
||||
"[3202]"
|
||||
"[91]"
|
||||
|
||||
Binary file not shown.
@@ -6,7 +6,7 @@
|
||||
|
||||
rm -rf fuzz_data_corpus fuzz_gs1_corpus
|
||||
rm -f fuzz_data_seed_corpus.zip fuzz_gs1_seed_corpus.zip
|
||||
gcc gen_corpora.c -o gen_corpora -lzint -fsanitize=address
|
||||
cc gen_corpora.c -o gen_corpora -lzint -fsanitize=address
|
||||
./gen_corpora
|
||||
zip -j fuzz_data_seed_corpus.zip fuzz_data_corpus/*
|
||||
zip -j fuzz_gs1_seed_corpus.zip fuzz_gs1_corpus/*
|
||||
@@ -59,29 +59,32 @@ struct item {
|
||||
int test_fuzz_idx;
|
||||
int symbology;
|
||||
int input_mode;
|
||||
int output_options;
|
||||
int eci;
|
||||
int option_1;
|
||||
int option_2;
|
||||
int option_3;
|
||||
float height;
|
||||
int border_width;
|
||||
char *data;
|
||||
int length;
|
||||
};
|
||||
|
||||
/* DATA_MODE data */
|
||||
static const struct item data_data[] = {
|
||||
/* 0*/ { 0, BARCODE_CODEONE, -1, -1, -1, -1, -1, "3333P33B\035333V3333333333333\0363", -1 }, /* #181 Nico Gunkel, OSS-Fuzz */
|
||||
/* 1*/ { 1, BARCODE_CODEONE, -1, -1, -1, -1, -1, "{{-06\024755712162106130000000829203983\377", -1 }, /* #232 Jan Schrewe, CI-Fuzz, out-of-bounds in is_last_single_ascii() sp + 1 */
|
||||
/* 2*/ { 2, BARCODE_CODEONE, -1, -1, -1, -1, -1, "\000\000\000\367\000\000\000\000\000\103\040\000\000\244\137\140\140\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\165\060\060\060\060\061\060\060\114\114\060\010\102\102\102\102\102\102\102\102\057\102\100\102\057\233\100\102", 60 }, /* #300 (#4) Andre Maute (`c1_c40text_cnt()` not accounting for extended ASCII shifts) */
|
||||
/* 3*/ { 3, BARCODE_CODEONE, -1, -1, -1, 10, -1, "\153\153\153\060\001\000\134\153\153\015\015\353\362\015\015\015\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\362\362\000", 65 }, /* #300 (#8) Andre Maute (`c1_encode()` looping on latch) */
|
||||
/* 4*/ { 4, BARCODE_CODEONE, -1, -1, -1, 10, -1, "\015\015\353\362\015\015\015\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\362\362\000", 39 }, /* #300 (#8 shortened) Andre Maute */
|
||||
/* 5*/ { 5, BARCODE_CODEONE, -1, -1, -1, 10, -1, "\153\153\153\153\153\060\001\000\000\134\153\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\153\153\153\153\153\153\043\000\000\307\000\147\000\000\000\043\113\153\162\162\215\220", 90 }, /* #300 (#12) Andre Maute (too small buffer for Version T) */
|
||||
/* 6*/ { 0, BARCODE_TELEPEN, -1, -1, -1, -1, -1, "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", 69 }, /* #181 Nico Gunkel OSS-Fuzz */
|
||||
/* 7*/ { 2, BARCODE_TELEPEN_NUM, -1, -1, -1, -1, -1, "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", 70 },
|
||||
/* 8*/ { 3, BARCODE_TELEPEN_NUM, -1, -1, -1, -1, -1, "0404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404", 136 },
|
||||
/* 9*/ { 5, BARCODE_TELEPEN_NUM, -1, -1, -1, -1, -1, "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000X", 136 },
|
||||
/* 10*/ { 6, BARCODE_TELEPEN_NUM, -1, -1, -1, -1, -1, "9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", 136 },
|
||||
/* 11*/ { 0, BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, "\034\034I", 3 }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 12*/ { 0, BARCODE_AZTEC, -1, -1, -1, -1, -1,
|
||||
/* 0*/ { 0, BARCODE_CODEONE, -1, 0, -1, -1, -1, -1, 0, 0, "3333P33B\035333V3333333333333\0363", -1 }, /* #181 Nico Gunkel, OSS-Fuzz */
|
||||
/* 1*/ { 1, BARCODE_CODEONE, -1, 0, -1, -1, -1, -1, 0, 0, "{{-06\024755712162106130000000829203983\377", -1 }, /* #232 Jan Schrewe, CI-Fuzz, out-of-bounds in is_last_single_ascii() sp + 1 */
|
||||
/* 2*/ { 2, BARCODE_CODEONE, -1, 0, -1, -1, -1, -1, 0, 0, "\000\000\000\367\000\000\000\000\000\103\040\000\000\244\137\140\140\000\000\000\000\000\000\000\000\000\005\000\000\000\000\000\165\060\060\060\060\061\060\060\114\114\060\010\102\102\102\102\102\102\102\102\057\102\100\102\057\233\100\102", 60 }, /* #300 (#4) Andre Maute (`c1_c40text_cnt()` not accounting for extended ASCII shifts) */
|
||||
/* 3*/ { 3, BARCODE_CODEONE, -1, 0, -1, -1, 10, -1, 0, 0, "\153\153\153\060\001\000\134\153\153\015\015\353\362\015\015\015\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\362\362\000", 65 }, /* #300 (#8) Andre Maute (`c1_encode()` looping on latch) */
|
||||
/* 4*/ { 4, BARCODE_CODEONE, -1, 0, -1, -1, 10, -1, 0, 0, "\015\015\353\362\015\015\015\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\110\015\015\015\015\015\015\015\015\015\015\015\015\015\015\015\362\362\000", 39 }, /* #300 (#8 shortened) Andre Maute */
|
||||
/* 5*/ { 5, BARCODE_CODEONE, -1, 0, -1, -1, 10, -1, 0, 0, "\153\153\153\153\153\060\001\000\000\134\153\153\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\153\153\153\153\153\153\043\000\000\307\000\147\000\000\000\043\113\153\162\162\215\220", 90 }, /* #300 (#12) Andre Maute (too small buffer for Version T) */
|
||||
/* 6*/ { 0, BARCODE_TELEPEN, -1, 0, -1, -1, -1, -1, 0, 0, "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", 69 }, /* #181 Nico Gunkel OSS-Fuzz */
|
||||
/* 7*/ { 2, BARCODE_TELEPEN_NUM, -1, 0, -1, -1, -1, -1, 0, 0, "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000", 70 },
|
||||
/* 8*/ { 3, BARCODE_TELEPEN_NUM, -1, 0, -1, -1, -1, -1, 0, 0, "0404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404", 136 },
|
||||
/* 9*/ { 5, BARCODE_TELEPEN_NUM, -1, 0, -1, -1, -1, -1, 0, 0, "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000X", 136 },
|
||||
/* 10*/ { 6, BARCODE_TELEPEN_NUM, -1, 0, -1, -1, -1, -1, 0, 0, "9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", 136 },
|
||||
/* 11*/ { 0, BARCODE_CODABLOCKF, -1, 0, -1, -1, -1, -1, 0, 0, "\034\034I", 3 }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 12*/ { 0, BARCODE_AZTEC, -1, 0, -1, -1, -1, -1, 0, 0,
|
||||
"\133\060\060\060\135\060\125\125\125\125\140\060\125\125\125\125\060\060\060\271\060\060\125\103\164\125\125\125\377\377\125\125"
|
||||
"\125\125\125\125\125\133\060\076\060\135\261\177\261\261\261\236\261\261\261\040\261\261\261\261\261\261\261\020\261\261\261\261"
|
||||
"\261\261\265\261\261\261\261\261\261\261\261\261\261\261\261\040\224\261\261\261\261\261\000\000\004\000\031\060\031\031\031\031"
|
||||
@@ -154,7 +157,7 @@ static const struct item data_data[] = {
|
||||
"\377\377\377\377\377\377\261\261\261\261\261\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\135\135\135\135\135\135"
|
||||
"\135\335\135\060\060\010\010\010\010\010\060", 2251
|
||||
}, /* Original OSS-Fuzz triggering data for malloc leak */
|
||||
/* 13*/ { 1, BARCODE_AZTEC, -1, -1, -1, -1, -1,
|
||||
/* 13*/ { 1, BARCODE_AZTEC, -1, 0, -1, -1, -1, -1, 0, 0,
|
||||
"\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060"
|
||||
"\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\000\060\060\060\060\000\060\060\000\060\060\060\060"
|
||||
"\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060\060"
|
||||
@@ -244,7 +247,7 @@ static const struct item data_data[] = {
|
||||
"\175\060\060\060\175\175\175\175\060\060\005\060\005\060\005\060\060\060\060\000\000\060\060\060\060\060\060\377\060\060\060\060"
|
||||
"\377\060\377\377\060\060\057\060\060\057\060\060\060\000\000\060\060", 2801
|
||||
}, /* Original OSS-Fuzz triggering data for binary_string buffer overrun */
|
||||
/* 14*/ { 2, BARCODE_AZTEC, -1, -1, 1, -1, -1,
|
||||
/* 14*/ { 2, BARCODE_AZTEC, -1, 0, -1, 1, -1, -1, 0, 0,
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
|
||||
@@ -280,7 +283,7 @@ static const struct item data_data[] = {
|
||||
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123",
|
||||
4483
|
||||
}, /* 4483 = (1664 (Max codewords) - 169 (ECC codewords) - 5/12 (D/L) - 3/12 (padding)) * 3 (3 4-bit digits per 12-bit wordcode) = 4483 */
|
||||
/* 15*/ { 8, BARCODE_AZTEC, -1, -1, -1, 1, -1,
|
||||
/* 15*/ { 8, BARCODE_AZTEC, -1, 0, -1, -1, 1, -1, 0, 0,
|
||||
"\105\105\000\000\000\000\000\000\000\000\077\012\377\377\377\072\376\376\350\350\350\350\350\250\350\350\350\350\354\350\350\350\350\350\001\000\000\000\000\000"
|
||||
"\000\036\103\012\072\103\103\000\100\116\000\000\000\000\000\000\000\000\000\000\002\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\077\012"
|
||||
"\377\377\377\072\376\376\350\350\350\350\350\250\350\350\350\350\354\350\350\350\000\000\000\000\000\000\000\033\000\036\103\012\072\103\103\000\100\116\000\000"
|
||||
@@ -338,7 +341,7 @@ static const struct item data_data[] = {
|
||||
"\377\377\103\377\364\377\364",
|
||||
2167
|
||||
}, /* #300 (#2) Andre Maute */
|
||||
/* 16*/ { 10, BARCODE_AZTEC, -1, -1, -1, 1, -1,
|
||||
/* 16*/ { 10, BARCODE_AZTEC, -1, 0, -1, -1, 1, -1, 0, 0,
|
||||
"\105\105\000\000\000\000\000\000\000\000\077\012\377\377\377\072\376\376\350\350\350\350\350\250\350\350\350\350\354\350\350\350\350\350\001\000\000\000\000\000"
|
||||
"\000\036\103\012\072\103\103\000\100\116\000\000\000\000\000\000\000\000\000\000\002\222\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\077\012"
|
||||
"\377\377\377\072\376\376\350\350\350\350\350\250\350\350\350\350\354\350\350\350\000\000\000\000\000\000\000\033\000\036\103\012\072\103\103\000\100\116\000\000"
|
||||
@@ -395,7 +398,7 @@ static const struct item data_data[] = {
|
||||
"\027\027\027\027\027\027\027\027\027\000\027\027\027\027\000\004\000\000\000\000\000\135\000\044\103\000\000\377\377\377\377\377\103\377\364\377\364",
|
||||
2157
|
||||
}, /* #300 (#3) Andre Maute */
|
||||
/* 17*/ { 11, BARCODE_AZTEC, -1, -1, 2, -1, -1,
|
||||
/* 17*/ { 11, BARCODE_AZTEC, -1, 0, -1, 2, -1, -1, 0, 0,
|
||||
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
|
||||
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
|
||||
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
|
||||
@@ -423,7 +426,7 @@ static const struct item data_data[] = {
|
||||
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000",
|
||||
996
|
||||
}, /* Padding 11 example causing issue with ZXing-C++ */
|
||||
/* 18*/ { 12, BARCODE_AZTEC, -1, -1, -1, -1, -1,
|
||||
/* 18*/ { 12, BARCODE_AZTEC, -1, 0, -1, -1, -1, -1, 0, 0,
|
||||
"\133\060\060\060\135\060\125\125\125\125\140\060\125\125\125\125\060\060\060\271\060\060\125\103\164\125\125\125\377\377\125\125\125\125\125\125\125\133\060\076"
|
||||
"\060\135\261\177\261\261\261\236\261\261\261\040\261\261\261\261\261\261\261\020\261\261\261\261\261\261\265\261\261\261\261\261\261\261\261\261\261\261\261\040"
|
||||
"\224\261\261\261\261\261\000\000\004\000\031\060\031\031\031\031\031\031\031\031\261\261\040\261\261\261\261\261\261\261\020\261\377\377\377\377\377\377\377\377"
|
||||
@@ -537,7 +540,7 @@ static const struct item data_data[] = {
|
||||
"\010\060",
|
||||
4402
|
||||
}, /* fuzz_data (1st) */
|
||||
/* 19*/ { 0, BARCODE_PDF417, FAST_MODE, -1, -1, -1, -1,
|
||||
/* 19*/ { 0, BARCODE_PDF417, FAST_MODE, 0, -1, -1, -1, -1, 0, 0,
|
||||
"\060\075\204\060\204\060\204\041\060\075\060\204\060\075\060\075\204\060\075\060\103\204\060\204\060\003\120\060\075\060\004\060\204\060\074\204\060\204\060\075"
|
||||
"\204\060\075\060\103\204\060\214\060\204\060\075\060\031\060\073\060\025\060\075\060\204\060\103\204\060\075\060\204\060\000\075\060\226\060\100\204\060\204\060"
|
||||
"\204\060\075\204\060\120\214\060\204\060\074\377\060\075\204\060\075\060\103\204\060\214\060\204\060\075\060\041\060\000\060\204\060\120\214\060\204\060\074\204"
|
||||
@@ -565,7 +568,7 @@ static const struct item data_data[] = {
|
||||
"\204\060\003\060\204\075\060\120\214\060\204\060\004\060\103\204\060\204\060\003\060\211\074\060\120\060\124\060\351\060\120\060\075\060\351\060\072\375\060\204\060",
|
||||
1001
|
||||
}, /* Original OSS-Fuzz triggering data */
|
||||
/* 20*/ { 1, BARCODE_PDF417, -1, -1, -1, -1, -1,
|
||||
/* 20*/ { 1, BARCODE_PDF417, -1, 0, -1, -1, -1, -1, 0, 0,
|
||||
"\060\075\204\060\204\060\204\041\060\075\060\204\060\075\060\075\204\060\075\060\103\204\060\204\060\003\120\060\075\060\004\060\204\060\074\204\060\204\060\075"
|
||||
"\204\060\075\060\103\204\060\214\060\204\060\075\060\031\060\073\060\025\060\075\060\204\060\103\204\060\075\060\204\060\000\075\060\226\060\100\204\060\204\060"
|
||||
"\204\060\075\204\060\120\214\060\204\060\074\377\060\075\204\060\075\060\103\204\060\214\060\204\060\075\060\041\060\000\060\204\060\120\214\060\204\060\074\204"
|
||||
@@ -593,7 +596,7 @@ static const struct item data_data[] = {
|
||||
"\204\060\003\060\204\075\060\120\214\060\204\060\004\060\103\204\060\204\060\003\060\211\074\060\120\060\124\060\351\060\120\060\075\060\351\060\072\375\060\204\060",
|
||||
1001
|
||||
}, /* Original OSS-Fuzz triggering data */
|
||||
/* 21*/ { 28, BARCODE_PDF417COMP, FAST_MODE, -1, 0, -1, -1,
|
||||
/* 21*/ { 28, BARCODE_PDF417COMP, FAST_MODE, 0, -1, 0, -1, -1, 0, 0,
|
||||
"\000\000\000\377\377\010\002\000\000\033\005\031\000\000\002\000\000\000\000\101\101\101\101\101\101\101\101\000\000\000\000\000\000\000\374\000\101\101\101\000"
|
||||
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\323\000\000\000\000\000\010\000\000\000\000\165\000\000\000\000\000\000\000\000\000\000\000\000\056"
|
||||
"\000\000\000\000\000\000\000\000\000\000\100\000\000\101\101\101\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\323\000\000\000\000\000\010\000"
|
||||
@@ -623,7 +626,7 @@ static const struct item data_data[] = {
|
||||
"\000\000\000\000\000\000\000\000",
|
||||
1048
|
||||
}, /* #300 (#1) Andre Maute (`pdf_text_submode_length()` not checking if previous/next BYT) */
|
||||
/* 22*/ { 29, BARCODE_PDF417, FAST_MODE, -1, -1, -1, -1,
|
||||
/* 22*/ { 29, BARCODE_PDF417, FAST_MODE, 0, -1, -1, -1, -1, 0, 0,
|
||||
"\060\060\060\060\060\060\060\060\060\060\060\162\162\162\162\162\162\162\162\162\162\047\122\162\000\000\167\211\206\001\000\047\153\153\153\153\153\067\066\164"
|
||||
"\060\060\060\060\060\060\060\060\060\060\060\162\162\162\162\162\162\162\162\162\162\047\122\162\000\000\167\211\206\001\000\047\153\153\153\153\153\153\153\164"
|
||||
"\164\164\164\164\164\124\164\164\164\164\164\164\164\164\164\164\164\164\164\164\060\060\060\060\060\060\060\060\060\060\060\162\162\162\162\162\162\162\162\162"
|
||||
@@ -692,7 +695,7 @@ static const struct item data_data[] = {
|
||||
"\162\162\001\100\167\167\001\044\204\167\167",
|
||||
2611
|
||||
}, /* #300 (#7) Andre Maute */
|
||||
/* 23*/ { 30, BARCODE_PDF417, -1, -1, -1, -1, -1,
|
||||
/* 23*/ { 30, BARCODE_PDF417, -1, 0, -1, -1, -1, -1, 0, 0,
|
||||
"\060\060\060\060\060\060\060\060\060\060\060\162\162\162\162\162\162\162\162\162\162\047\122\162\000\000\167\211\206\001\000\047\153\153\153\153\153\067\066\164"
|
||||
"\060\060\060\060\060\060\060\060\060\060\060\162\162\162\162\162\162\162\162\162\162\047\122\162\000\000\167\211\206\001\000\047\153\153\153\153\153\153\153\164"
|
||||
"\164\164\164\164\164\124\164\164\164\164\164\164\164\164\164\164\164\164\164\164\060\060\060\060\060\060\060\060\060\060\060\162\162\162\162\162\162\162\162\162"
|
||||
@@ -761,7 +764,7 @@ static const struct item data_data[] = {
|
||||
"\162\162\001\100\167\167\001\044\204\167\167",
|
||||
2611
|
||||
}, /* #300 (#7) Andre Maute !FAST_MODE */
|
||||
/* 24*/ { 31, BARCODE_PDF417, FAST_MODE, -1, -1, 0 /*same effect as 242*/, -1,
|
||||
/* 24*/ { 31, BARCODE_PDF417, FAST_MODE, 0, -1, -1, 0 /*same effect as 242*/, -1, 0, 0,
|
||||
"\000\000\000\000\000\000\000\000\000\000\000\212\377\000\000\153\153\153\153\153\153\153\060\047\047\043\047\057\153\000\153\153\137\377\153\153\000\134\000\000"
|
||||
"\000\153\153\343\153\153\153\060\047\047\043\047\057\157\153\153\153\000\162\162\162\162\162\162\377\053\377\377\377\134\134\134\142\134\162\162\377\377\377\167"
|
||||
"\001\100\000\377\004\002\000\000\000\000\000\001\000\000\134\077\162\072\176\000\162\162\162\162\162\162\377\053\377\377\377\134\134\134\142\134\162\162\162\162"
|
||||
@@ -832,17 +835,17 @@ static const struct item data_data[] = {
|
||||
"\057\262\054\377\134\134\142\153\330\153",
|
||||
2690
|
||||
}, /* #300 (#10) Andre Maute */
|
||||
/* 25*/ { 1, BARCODE_QRCODE, -1, -1, -1, -1, ZINT_FULL_MULTIBYTE, "\215\215\350\2156750\215\215\215\215\215\215\000\000\000\025\215\215\215\215\215\232\215\232\232\001\361\215\215\215\215\215\221\215\215\215\215JJJJJJNJJJJJJ\215\215\215\2159999\215\215\215\215\215\215\215\215\215\235\215\215\215\215\215\035\004\000\000@\000\000\000\000\375\000\000\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\000\000\000\000\241\247^^^\377\377\377\000 \000\000\000\000\000\000\377\377u\000\000\000\000\000\000\000^\377\377^^\000:\000\177\377\377\377?\377\377\377\377\377\377\377\377\377\377\377\377\377\377\241\241\232\232\232\232\232\232\232\232\000\377\377\377\242\003\000\000\377\377/\000AA\000\000\000\000\000\000\000\000\000\000\000\000T\000\000\000\000\000\000\000\000WWW\237\250WWWWWW\377\377R30 \377\377\000\000\000", 231 }, /* #300 (#15), Andre Maute */
|
||||
/* 26*/ { 2, BARCODE_QRCODE, -1, 35, -1, -1, ZINT_FULL_MULTIBYTE, "\215\215\215\215\215\350\215\215999\215\21500000\215\215\215\215\215\215\377O\000\000\036\000\000\000\000\357\376\026\377\377\377\377\241\241\232\232\232\232\232\232\235\032@\374:JGB \000\000@d\000\000\000\241\241\000\000\027\002\241\241\000\000\014\000\000\000\000\357\327\004\000\000\000\000\000\000\000\375\000\000\000\000\000\000\000\000\000\000\000\000\0000253]9R4R44,44,4404[255\350999\215\21599999\215\215\215\2150000\215\215\215\215\215\215\215\215\215]9444442<4444,4044%44vA\000\000\002\000'\000\000\215\377@\215\215\350\215\215\215\215\215\215\215\307\306\306n\215\215\000\000\001\000\000\203\000\000\000\000\000\000@\215\215\215[\2154315@]R0", 229 }, /* #300 (#16), Andre Maute */
|
||||
/* 27*/ { 0, BARCODE_AUSROUTE, -1, -1, -1, -1, -1, "A\000\000\000", 4 }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 28*/ { 1, BARCODE_AUSROUTE, -1, -1, -1, -1, -1, "1\000\000\000", 4 }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 29*/ { 0, BARCODE_EANX, -1, -1, -1, -1, -1, "55++15", -1, }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 30*/ { 1, BARCODE_EANX, -1, -1, -1, -1, -1, "+123456789012345678", -1, }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 31*/ { 8, BARCODE_EANX, -1, -1, -1, -1, -1, "+12345", -1, }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 32*/ { 9, BARCODE_EANX, -1, -1, -1, -1, -1, "+123456", -1, }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 33*/ { 10, BARCODE_EANX, -1, -1, -1, -1, -1, "000002000000200+203", -1 }, /* #218 Jan Schrewe CI-Fuzz */
|
||||
/* 34*/ { 0, BARCODE_DOTCODE, -1, -1, -1, -1, -1, "(\207'", -1 }, /* #181 Christian Hartlage / Nico Gunkel OSS-Fuzz */
|
||||
/* 35*/ { 1, BARCODE_DOTCODE, -1, -1, -1, -1, -1,
|
||||
/* 25*/ { 1, BARCODE_QRCODE, -1, 0, -1, -1, -1, ZINT_FULL_MULTIBYTE, 0, 0, "\215\215\350\2156750\215\215\215\215\215\215\000\000\000\025\215\215\215\215\215\232\215\232\232\001\361\215\215\215\215\215\221\215\215\215\215JJJJJJNJJJJJJ\215\215\215\2159999\215\215\215\215\215\215\215\215\215\235\215\215\215\215\215\035\004\000\000@\000\000\000\000\375\000\000\000\000\000\000\000\000\000\000\000\000\000\241\000\000\000\000\000\000\000\241\247^^^\377\377\377\000 \000\000\000\000\000\000\377\377u\000\000\000\000\000\000\000^\377\377^^\000:\000\177\377\377\377?\377\377\377\377\377\377\377\377\377\377\377\377\377\377\241\241\232\232\232\232\232\232\232\232\000\377\377\377\242\003\000\000\377\377/\000AA\000\000\000\000\000\000\000\000\000\000\000\000T\000\000\000\000\000\000\000\000WWW\237\250WWWWWW\377\377R30 \377\377\000\000\000", 231 }, /* #300 (#15), Andre Maute */
|
||||
/* 26*/ { 2, BARCODE_QRCODE, -1, 0, 35, -1, -1, ZINT_FULL_MULTIBYTE, 0, 0, "\215\215\215\215\215\350\215\215999\215\21500000\215\215\215\215\215\215\377O\000\000\036\000\000\000\000\357\376\026\377\377\377\377\241\241\232\232\232\232\232\232\235\032@\374:JGB \000\000@d\000\000\000\241\241\000\000\027\002\241\241\000\000\014\000\000\000\000\357\327\004\000\000\000\000\000\000\000\375\000\000\000\000\000\000\000\000\000\000\000\000\0000253]9R4R44,44,4404[255\350999\215\21599999\215\215\215\2150000\215\215\215\215\215\215\215\215\215]9444442<4444,4044%44vA\000\000\002\000'\000\000\215\377@\215\215\350\215\215\215\215\215\215\215\307\306\306n\215\215\000\000\001\000\000\203\000\000\000\000\000\000@\215\215\215[\2154315@]R0", 229 }, /* #300 (#16), Andre Maute */
|
||||
/* 27*/ { 0, BARCODE_AUSROUTE, -1, 0, -1, -1, -1, -1, 0, 0, "A\000\000\000", 4 }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 28*/ { 1, BARCODE_AUSROUTE, -1, 0, -1, -1, -1, -1, 0, 0, "1\000\000\000", 4 }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 29*/ { 0, BARCODE_EANX, -1, 0, -1, -1, -1, -1, 0, 0, "55++15", -1, }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 30*/ { 1, BARCODE_EANX, -1, 0, -1, -1, -1, -1, 0, 0, "+123456789012345678", -1, }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 31*/ { 8, BARCODE_EANX, -1, 0, -1, -1, -1, -1, 0, 0, "+12345", -1, }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 32*/ { 9, BARCODE_EANX, -1, 0, -1, -1, -1, -1, 0, 0, "+123456", -1, }, /* #181 Christian Hartlage OSS-Fuzz */
|
||||
/* 33*/ { 10, BARCODE_EANX, -1, 0, -1, -1, -1, -1, 0, 0, "000002000000200+203", -1 }, /* #218 Jan Schrewe CI-Fuzz */
|
||||
/* 34*/ { 0, BARCODE_DOTCODE, -1, 0, -1, -1, -1, -1, 0, 0, "(\207'", -1 }, /* #181 Christian Hartlage / Nico Gunkel OSS-Fuzz */
|
||||
/* 35*/ { 1, BARCODE_DOTCODE, -1, 0, -1, -1, -1, -1, 0, 0,
|
||||
"\133\061\106\133\061\106\070\161\116\133\116\116\067\040\116\016\000\116\125\111\125\125\316\125\125\116\116\116\116\117\116\125"
|
||||
"\111\125\103\316\125\125\116\116\116\116\117\000\000\116\136\116\116\001\116\316\076\116\116\057\136\116\116\134\000\000\116\116"
|
||||
"\116\230\116\116\116\116\125\125\125\257\257\257\000\001\116\130\212\212\212\212\212\212\212\377\377\210\212\212\177\000\212\212"
|
||||
@@ -859,14 +862,14 @@ static const struct item data_data[] = {
|
||||
"\071\071\071\071\071",
|
||||
421
|
||||
}, /* Original OSS-Fuzz triggering data for index out of bounds (encoding of HT/FS/GS/RS when shifting to code set B) */
|
||||
/* 36*/ { 2, BARCODE_DOTCODE, -1, -1, -1, -1, -1, "\233:", -1 }, /* Original OSS-Fuzz triggering data for codeword_array buffer overflow, L777 */
|
||||
/* 37*/ { 3, BARCODE_DOTCODE, -1, -1, -1, -1, -1, "\241\034", -1 }, /* As above L793 */
|
||||
/* 38*/ { 4, BARCODE_DOTCODE, -1, -1, -1, -1, -1, "\270\036", -1 }, /* As above L799 */
|
||||
/* 39*/ { 5, BARCODE_DOTCODE, -1, -1, -1, -1, -1, "\237\032", -1 }, /* As above L904 */
|
||||
/* 40*/ { 6, BARCODE_DOTCODE, -1, -1, -1, -1, -1, "\237", -1 }, /* As above L1090 */
|
||||
/* 41*/ { 0, BARCODE_MAXICODE, -1, -1, -1, -1, -1, "\223\223\223\223\223\200\000\060\060\020\122\104\060\343\000\000\040\104\104\104\104\177\377\040\000\324\336\000\000\000\000\104\060\060\060\060\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\060\104\104\000\000\000\040\104\104\104\104\177\377\377\377\324\336\000\000\000\000\104\377\104\001\104\104\104\104\104\104\233\233\060\060\060\060\060\060\060\060\060\325\074", 107 }, /* #181 Nico Gunkel OSS-Fuzz - original OSS-Fuzz triggering data */
|
||||
/* 42*/ { 1, BARCODE_MAXICODE, -1, -1, -1, -1, -1, "AaAaAaAaAaAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA123456789", -1 }, /* Add 6 lowercase a's so 6 SHIFTS inserted so 6 + 138 (max input len) = 144 and numbers come at end of buffer */
|
||||
/* 43*/ { 0, BARCODE_CODE128, DATA_MODE | EXTRA_ESCAPE_MODE, -1, -1, -1, -1,
|
||||
/* 36*/ { 2, BARCODE_DOTCODE, -1, 0, -1, -1, -1, -1, 0, 0, "\233:", -1 }, /* Original OSS-Fuzz triggering data for codeword_array buffer overflow, L777 */
|
||||
/* 37*/ { 3, BARCODE_DOTCODE, -1, 0, -1, -1, -1, -1, 0, 0, "\241\034", -1 }, /* As above L793 */
|
||||
/* 38*/ { 4, BARCODE_DOTCODE, -1, 0, -1, -1, -1, -1, 0, 0, "\270\036", -1 }, /* As above L799 */
|
||||
/* 39*/ { 5, BARCODE_DOTCODE, -1, 0, -1, -1, -1, -1, 0, 0, "\237\032", -1 }, /* As above L904 */
|
||||
/* 40*/ { 6, BARCODE_DOTCODE, -1, 0, -1, -1, -1, -1, 0, 0, "\237", -1 }, /* As above L1090 */
|
||||
/* 41*/ { 0, BARCODE_MAXICODE, -1, 0, -1, -1, -1, -1, 0, 0, "\223\223\223\223\223\200\000\060\060\020\122\104\060\343\000\000\040\104\104\104\104\177\377\040\000\324\336\000\000\000\000\104\060\060\060\060\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\104\060\104\104\000\000\000\040\104\104\104\104\177\377\377\377\324\336\000\000\000\000\104\377\104\001\104\104\104\104\104\104\233\233\060\060\060\060\060\060\060\060\060\325\074", 107 }, /* #181 Nico Gunkel OSS-Fuzz - original OSS-Fuzz triggering data */
|
||||
/* 42*/ { 1, BARCODE_MAXICODE, -1, 0, -1, -1, -1, -1, 0, 0, "AaAaAaAaAaAaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA123456789", -1 }, /* Add 6 lowercase a's so 6 SHIFTS inserted so 6 + 138 (max input len) = 144 and numbers come at end of buffer */
|
||||
/* 43*/ { 0, BARCODE_CODE128, DATA_MODE | EXTRA_ESCAPE_MODE, 0, -1, -1, -1, -1, 0, 0,
|
||||
"\003\134\136\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\103\000\000\051\000\054\103\103\103\377\377\377"
|
||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377"
|
||||
"\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\242\053\134\136\061\067\242\242\242\242\242"
|
||||
@@ -875,15 +878,19 @@ static const struct item data_data[] = {
|
||||
"\136\136",
|
||||
162
|
||||
}, /* fuzz_data (2nd) */
|
||||
/* 44*/ { 1, BARCODE_CODABLOCKF, -1, 0, -1, -1, -1, 4, 2, 0, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", -1 }, /* #353, Simon Resch (raster/vector: allow for separator height being > twice row height) */
|
||||
/* 45*/ { 2, BARCODE_MAXICODE, -1, BARCODE_BIND_TOP | BARCODE_BOX, -1, -1, -1, -1, 0, 52, "^11%", -1 }, /* fuzz_data (3rd) */
|
||||
};
|
||||
|
||||
/* GS1_MODE data */
|
||||
static const struct item gs1_data[] = {
|
||||
/* 0*/ { 0, BARCODE_QRCODE, GS1_MODE | GS1NOCHECK_MODE, -1, -1, -1, -1, "[]CCCCCLLLLLLLLLLLLLLLLLLLLLCCCCCCCC@CCCCCCCCCCCCCCCCCCCCCCC%%C%C%%%%%%%%%%%%%%LLLCCCCCCCC%%C%C%%%%%%%%%%%%%%LLLLLLLLLLLLLLLLLLL000000032861710*383556LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL155816162LLLLLCC%%C%C%%%%%%%%%%%%%%LLLCCCCCCCC%%C%C%%%%%%%%%%%%%%LLLLLLLLLL)!1661055777[723]T5", -1 }, /* #300 (#14), Andre Maute */
|
||||
/* 1*/ { 5, BARCODE_EANX_CC, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, -1, -1, -1, "()111%", -1 }, /* #300 (#5), Andre Maute (`dbar_date()` not checking length + other non-checks) */
|
||||
/* 2*/ { 6, BARCODE_UPCA_CC, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, -1, -1, -1, "()90", -1, }, /* #300 (#6), Andre Maute (`dbar_date()` not checking length + other non-checks) */
|
||||
/* 3*/ { 7, BARCODE_UPCA_CC, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, -1, -1, -1, -1, "()904OOOOO)CK0336680OOOOOOOOOOOOOO29[0kkkk%%%%(", -1 }, /* #300 (#11), Andre Maute (`gs1_verify()` not checking length on resolve AI data loop) */
|
||||
/* 4*/ { 8, BARCODE_GS1_128_CC, GS1_MODE | GS1NOCHECK_MODE, -1, 3, -1, -1, "[]RRR___________________KKKRRR0000", -1 }, /* #300 (#13), Andre Maute (`calc_padding_ccc()` dividing by zero when linear width == 68) */
|
||||
/* 0*/ { 0, BARCODE_QRCODE, GS1_MODE | GS1NOCHECK_MODE, 0, -1, -1, -1, -1, 0, 0, "[]CCCCCLLLLLLLLLLLLLLLLLLLLLCCCCCCCC@CCCCCCCCCCCCCCCCCCCCCCC%%C%C%%%%%%%%%%%%%%LLLCCCCCCCC%%C%C%%%%%%%%%%%%%%LLLLLLLLLLLLLLLLLLL000000032861710*383556LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL155816162LLLLLCC%%C%C%%%%%%%%%%%%%%LLLCCCCCCCC%%C%C%%%%%%%%%%%%%%LLLLLLLLLL)!1661055777[723]T5", -1 }, /* #300 (#14), Andre Maute */
|
||||
/* 1*/ { 5, BARCODE_EANX_CC, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, 0, -1, -1, -1, -1, 0, 0, "()111%", -1 }, /* #300 (#5), Andre Maute (`dbar_date()` not checking length + other non-checks) */
|
||||
/* 2*/ { 6, BARCODE_UPCA_CC, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, 0, -1, -1, -1, -1, 0, 0, "()90", -1, }, /* #300 (#6), Andre Maute (`dbar_date()` not checking length + other non-checks) */
|
||||
/* 3*/ { 7, BARCODE_UPCA_CC, GS1_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE, 0, -1, -1, -1, -1, 0, 0, "()904OOOOO)CK0336680OOOOOOOOOOOOOO29[0kkkk%%%%(", -1 }, /* #300 (#11), Andre Maute (`gs1_verify()` not checking length on resolve AI data loop) */
|
||||
/* 4*/ { 8, BARCODE_GS1_128_CC, GS1_MODE | GS1NOCHECK_MODE, 0, -1, 3, -1, -1, 0, 0, "[]RRR___________________KKKRRR0000", -1 }, /* #300 (#13), Andre Maute (`calc_padding_ccc()` dividing by zero when linear width == 68) */
|
||||
/* 5*/ { 9, BARCODE_DBAR_EXP, GS1_MODE | GS1RAW_MODE, 0, -1, -1, -1, -1, 0, 0, "1012345678901234567890211", -1 }, /* #352, Simon Resch (`gs1_lint_parse_raw_caret()` check that data of AIs with non-predefined lengths are terminated with separators (unless last)) */
|
||||
/* 5*/ { 10, BARCODE_DBAR_EXP, GS1_MODE | GS1NOCHECK_MODE | HEIGHTPERROW_MODE | FAST_MODE, 0, -1, -1, -1, -1, 0, 0, "1012345678901234567890211", -1 }, /* #352, Simon Resch (`gs1_lint_parse_raw_caret()` check that data of AIs with non-predefined lengths are terminated with separators (unless last)) */
|
||||
};
|
||||
|
||||
/* Write a setting as 1 char to filename, allowing for -1 meaning none (255 or zero) */
|
||||
@@ -935,22 +942,29 @@ static void write_corp(const char dirname[], const struct item data[], const int
|
||||
|
||||
if (data[i].input_mode != -1) {
|
||||
/* Shift out DATA/UNICODE/GS1_MODE (shifted back in `set_symbol()` in "fuzz.h") */
|
||||
write_setting(filename, data[i].input_mode >> 3, 0, fp);
|
||||
write_setting(filename, data[i].input_mode >> 3, 0 /*none*/, fp);
|
||||
} else {
|
||||
write_setting(filename, data[i].input_mode, 0, fp);
|
||||
write_setting(filename, data[i].input_mode, 0 /*none*/, fp);
|
||||
}
|
||||
if (si->option_1_min <= si->option_1_max) {
|
||||
write_setting(filename, data[i].option_1, 0xFF, fp);
|
||||
write_setting(filename, data[i].option_1, 0xFF /*none*/, fp);
|
||||
}
|
||||
if (si->option_2_min <= si->option_2_max) {
|
||||
write_setting(filename, data[i].option_2, 0, fp);
|
||||
write_setting(filename, data[i].option_2, 0 /*none*/, fp);
|
||||
}
|
||||
if (!no_eci && (ZBarcode_Cap(data[i].symbology, ZINT_CAP_ECI) & ZINT_CAP_ECI)) {
|
||||
write_setting(filename, data[i].eci, 0, fp);
|
||||
write_setting(filename, data[i].eci, 0 /*none*/, fp);
|
||||
}
|
||||
if (si->option_3) {
|
||||
write_setting(filename, data[i].option_3 != -1, 0, fp);
|
||||
if (si->option_3_min <= si->option_3_max) {
|
||||
write_setting(filename, data[i].option_3 != -1, 0 /*none*/, fp);
|
||||
}
|
||||
if (!(ZBarcode_Cap(data[i].symbology, ZINT_CAP_FIXED_RATIO) & ZINT_CAP_FIXED_RATIO)) {
|
||||
write_setting(filename, data[i].height, 0 /*none*/, fp);
|
||||
}
|
||||
/* `border_width` */
|
||||
write_setting(filename, data[i].border_width, 0 /*none*/, fp);
|
||||
/* `output_options` */
|
||||
write_setting(filename, data[i].output_options, 0 /*none*/, fp);
|
||||
|
||||
ret = fwrite(data[i].data, sizeof(char), length, fp);
|
||||
if (ret != length) {
|
||||
|
||||
Reference in New Issue
Block a user