1
0
mirror of https://git.code.sf.net/p/zint/code synced 2026-06-09 23:23:36 +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:
gitlost
2026-03-22 15:05:53 +00:00
parent f6174cba04
commit 56fca5b2a1
18 changed files with 494 additions and 307 deletions
+2 -1
View File
@@ -1,4 +1,4 @@
Version 2.16.0.9 (dev) not released yet (2026-03-18) Version 2.16.0.9 (dev) not released yet (2026-03-22)
==================================================== ====================================================
**Incompatible changes** **Incompatible changes**
@@ -42,6 +42,7 @@ Bugs
- CODE32/PZN: fix not restoring `option_2` (props axxel) - CODE32/PZN: fix not restoring `option_2` (props axxel)
- DBAR_EXP_CC/DBAR_EXPSTK_CC: fix separator over finder patterns when linear - DBAR_EXP_CC/DBAR_EXPSTK_CC: fix separator over finder patterns when linear
part is greater than 4 codeblocks part is greater than 4 codeblocks
- raster/vector: fix BARCODE_BIND_TOP trumping BARCODE_BOX
Version 2.16.0 (2025-12-19) Version 2.16.0 (2025-12-19)
+2 -1
View File
@@ -710,7 +710,8 @@ INTERNAL void zint_out_set_whitespace_offsets(const struct zint_symbol *symbol,
*p_xoffset = symbol->whitespace_width + qz_left; *p_xoffset = symbol->whitespace_width + qz_left;
*p_roffset = symbol->whitespace_width + qz_right; *p_roffset = symbol->whitespace_width + qz_right;
if (symbol->output_options & BARCODE_BOX) { /* BARCODE_BIND_TOP trumps BARCODE_BOX */
if (!(symbol->output_options & BARCODE_BIND_TOP) && (symbol->output_options & BARCODE_BOX)) {
*p_xoffset += symbol->border_width; *p_xoffset += symbol->border_width;
*p_roffset += symbol->border_width; *p_roffset += symbol->border_width;
} }
+2 -1
View File
@@ -727,7 +727,8 @@ static void draw_bind_box(const struct zint_symbol *symbol, unsigned char *pixel
DEFAULT_INK); DEFAULT_INK);
} }
} }
if (symbol->output_options & BARCODE_BOX) { /* BARCODE_BIND_TOP trumps BARCODE_BOX */
if (!(symbol->output_options & BARCODE_BIND_TOP) && (symbol->output_options & BARCODE_BOX)) {
/* Vertical side bars */ /* Vertical side bars */
const int xbox_right = image_width - bwidth_si; const int xbox_right = image_width - bwidth_si;
int box_top = yoffset_si; int box_top = yoffset_si;
+1
View File
@@ -17,5 +17,6 @@
FROM gcr.io/oss-fuzz-base/base-builder FROM gcr.io/oss-fuzz-base/base-builder
RUN apt-get update && apt-get install -y make cmake RUN apt-get update && apt-get install -y make cmake
RUN git clone --depth 1 https://git.code.sf.net/p/zint/code zint RUN git clone --depth 1 https://git.code.sf.net/p/zint/code zint
#ADD ./zint.tar.gz zint
WORKDIR zint WORKDIR zint
COPY build.sh $SRC/ COPY build.sh $SRC/
+56
View 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.
+219 -160
View File
@@ -42,14 +42,13 @@
#define ZARRAY_SIZE(x) ((int) (sizeof(x) / sizeof((x)[0]))) #define ZARRAY_SIZE(x) ((int) (sizeof(x) / sizeof((x)[0])))
#define INPUT_MODE_MASK (ESCAPE_MODE | GS1PARENS_MODE | GS1NOCHECK_MODE | HEIGHTPERROW_MODE | FAST_MODE \ #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 \ #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 \ | SMALL_TEXT | BOLD_TEXT | CMYK_COLOUR | BARCODE_DOTTY_MODE | GS1_GS_SEPARATOR \
| OUT_BUFFER_INTERMEDIATE | BARCODE_QUIET_ZONES | BARCODE_NO_QUIET_ZONES \ | OUT_BUFFER_INTERMEDIATE | BARCODE_QUIET_ZONES | BARCODE_NO_QUIET_ZONES \
| COMPLIANT_HEIGHT | EANUPC_GUARD_WHITESPACE | EMBED_VECTOR_FONT) | COMPLIANT_HEIGHT | EANUPC_GUARD_WHITESPACE | EMBED_VECTOR_FONT \
#endif | BARCODE_CONTENT_SEGS) /* BARCODE_MEMORY_FILE always set */
/* Based on `z_not_sane()` flags in "backend/common.h") */ /* Based on `z_not_sane()` flags in "backend/common.h") */
#define IS_CTL_F (0x00000001) /* ASCII control (incl. DEL) */ #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 { struct settings_item {
const int idx, symbology, sane_flag; 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[] = { 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 }, { 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, 140 }, { 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, 112 }, { 2, BARCODE_C25STANDARD, NEON_F, 0, -1, 0, 2, 0, -1, 1, 112 },
{ 3, BARCODE_C25INTER, NEON_F, 0, -1, 0, 2, 0, 1, 125 }, { 3, BARCODE_C25INTER, NEON_F, 0, -1, 0, 2, 0, -1, 1, 125 },
{ 4, BARCODE_C25IATA, NEON_F, 0, -1, 0, 2, 0, 1, 80 }, { 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, /*len*/ 0, -1 }, { 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, 113 }, { 6, BARCODE_C25LOGIC, NEON_F, 0, -1, 0, 2, 0, -1, 1, 113 },
{ 7, BARCODE_C25IND, NEON_F, 0, -1, 0, 2, 0, 1, 79 }, { 7, BARCODE_C25IND, NEON_F, 0, -1, 0, 2, 0, -1, 1, 79 },
{ 8, BARCODE_CODE39, SILVER_F, 0, -1, 0, 2, 0, 1, 86 }, { 8, BARCODE_CODE39, SILVER_F, 0, -1, 0, 2, 0, -1, 1, 86 },
{ 9, BARCODE_EXCODE39, SILVER_F, 0, -1, 0, 2, 0, 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, 14 }, { 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, 2 }, { 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, 5 }, { 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, 19 }, { 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, 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, 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, 3, 198 }, { 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, /*len*/ 0, -1 }, { 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, 3, 103 }, { 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, /*len*/ 0, -1 }, { 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, 198 }, { 20, BARCODE_CODE128, 0, 0, -1, 0, -1, 0, -1, 1, 198 },
{ 21, BARCODE_DPLEIT, NEON_F, 0, -1, 0, -1, 0, 1, 13 }, { 21, BARCODE_DPLEIT, NEON_F, 0, -1, 0, -1, 0, -1, 1, 13 },
{ 22, BARCODE_DPIDENT, NEON_F, 0, -1, 0, -1, 0, 1, 11 }, { 22, BARCODE_DPIDENT, NEON_F, 0, -1, 0, -1, 0, -1, 1, 11 },
{ 23, BARCODE_CODE16K, 0, -1, 16, 0, -1, 0, 1, 154 }, { 23, BARCODE_CODE16K, 0, -1, 16, 0, -1, 0, 4, 1, 154 },
{ 24, BARCODE_CODE49, ASCII_F, 2, 8, 0, -1, 0, 1, 81 }, { 24, BARCODE_CODE49, ASCII_F, 2, 8, 0, -1, 1, 4, 1, 81 },
{ 25, BARCODE_CODE93, ASCII_F, 0, -1, 0, 1, 0, 1, 123 }, { 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, /*len*/ 0, -1 }, { 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, /*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, 128 }, { 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, 14 }, { 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, 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, 3, 74 }, { 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, 69 }, { 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, /*len*/ 0, -1 }, { 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, 18 }, { 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, 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, /*len*/ 0, -1 }, { 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, 14 }, { 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, 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, /*len*/ 0, -1 }, { 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, 38 }, { 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, /*len*/ 0, -1 }, { 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, /*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, /*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, /*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, /*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, /*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, 92 }, { 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, /*len*/ 0, -1 }, { 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 }, { 49, BARCODE_FIM, FIM_F, 0, -1, 0, -1, 0, -1, 1, 1 },
{ 50, BARCODE_LOGMARS, SILVER_F, 0, -1, 0, 2, 0, 1, 30 }, { 50, BARCODE_LOGMARS, SILVER_F, 0, -1, 0, 2, 0, -1, 1, 30 },
{ 51, BARCODE_PHARMA, NEON_F, 0, -1, 0, -1, 0, 1, 6 }, { 51, BARCODE_PHARMA, NEON_F, 0, -1, 0, -1, 0, -1, 1, 6 },
{ 52, BARCODE_PZN, NEON_F, 0, -1, 0, 1, 0, 1, 8 }, { 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, 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, 8, 8 }, { 54, BARCODE_CEPNET, NEON_F, 0, -1, 0, -1, 0, -1, 8, 8 },
{ 55, BARCODE_PDF417, 0, -1, 8, 0, 30, 0, 1, 2710 }, { 55, BARCODE_PDF417, 0, -1, 8, 0, 30, 1, 4, 1, 2710 },
{ 56, BARCODE_PDF417COMP, 0, -1, 8, 0, 30, 0, 1, 2710 }, { 56, BARCODE_PDF417COMP, 0, -1, 8, 0, 30, 4, 4, 1, 2710 },
{ 57, BARCODE_MAXICODE, 0, -1, 6, 0, 100, 0, 1, 138 }, { 57, BARCODE_MAXICODE, 0, -1, 6, 0, 100, 0, -1, 1, 138 },
{ 58, BARCODE_QRCODE, 0, -1, 4, 0, 40, ZINT_FULL_MULTIBYTE, 1, 7089 }, { 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, /*len*/ 0, -1 }, { 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, 99 }, { 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, /*len*/ 0, -1 }, { 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, /*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, 8, 23 }, { 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, /*len*/ 0, -1 }, { 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, /*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, 8 }, { 66, BARCODE_AUSREPLY, GDSET_F, 0, -1, 0, -1, 0, -1, 1, 8 },
{ 67, BARCODE_AUSROUTE, GDSET_F, 0, -1, 0, -1, 0, 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, 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, 9, 19 }, { 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, 50 }, { 70, BARCODE_RM4SCC, KRSET_F, 0, -1, 0, -1, 0, -1, 1, 50 },
{ 71, BARCODE_DATAMATRIX, 0, 0, -1, 0, 48, DM_SQUARE | DM_ISO_144, 1, 3550 }, { 71, BARCODE_DATAMATRIX, 0, 0, -1, 0, 48, 128, 128, 1, 3550 },
{ 72, BARCODE_EAN14, NEON_F, 0, -1, 0, -1, 0, 1, 13 }, { 72, BARCODE_EAN14, NEON_F, 0, -1, 0, -1, 0, -1, 1, 13 },
{ 73, BARCODE_VIN, ARSENIC_F, 0, -1, 0, -1, 0, 17, 17 }, { 73, BARCODE_VIN, ARSENIC_F, 0, -1, 0, -1, 0, -1, 17, 17 },
{ 74, BARCODE_CODABLOCKF, 0, -1, 44, -1, 67, 0, 1, 2725 }, { 74, BARCODE_CODABLOCKF, 0, -1, 44, -1, 67, 4, 4, 1, 2725 },
{ 75, BARCODE_NVE18, NEON_F, 0, -1, 0, -1, 0, 1, 17 }, { 75, BARCODE_NVE18, NEON_F, 0, -1, 0, -1, 0, -1, 1, 17 },
{ 76, BARCODE_JAPANPOST, SHKASUTSET_F, 0, -1, 0, -1, 0, 1, 20 }, { 76, BARCODE_JAPANPOST, SHKASUTSET_F, 0, -1, 0, -1, 0, -1, 1, 20 },
{ 77, BARCODE_KOREAPOST, NEON_F, 0, -1, 0, -1, 0, 1, 6 }, { 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, /*len*/ 0, -1 }, { 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, 14 }, { 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, 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, 74 }, { 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, 38 }, { 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, /*len*/ 0, -1 }, { 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, 0, 1, 366 }, { 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, 32 }, { 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, 67 }, { 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, 136 }, { 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, /*len*/ 0, -1 }, { 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, 1, 13 }, { 89, BARCODE_ITF14, NEON_F, 0, -1, 0, -1, 0, 4, 1, 13 },
{ 90, BARCODE_KIX, KRSET_F, 0, -1, 0, -1, 0, 1, 18 }, { 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, /*len*/ 0, -1 }, { 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, 0, 1, 4483 }, { 92, BARCODE_AZTEC, 0, -1, 4, 0, 36, 128, 128, 1, 4483 },
{ 93, BARCODE_DAFT, DAFT_F, 0, -1, 50, 900, 0, 1, 576 }, { 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, /*len*/ 0, -1 }, { 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, /*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, 27, 28 }, { 96, BARCODE_DPD, KRSET_F, 0, -1, 0, -1, 0, 4, 27, 28 },
{ 97, BARCODE_MICROQR, 0, -1, 4, 0, 4, 0, 1, 35 }, { 97, BARCODE_MICROQR, 0, -1, 4, 0, 4, 0, -1, 1, 35 },
{ 98, BARCODE_HIBC_128, SILVER_F, 0, -1, 0, -1, 0, 1, 110 }, { 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, 70 }, { 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, /*len*/ 0, -1 }, { 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, /*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, DM_SQUARE | DM_ISO_144, 1, 110 }, { 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, /*len*/ 0, -1 }, { 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, ZINT_FULL_MULTIBYTE, 1, 110 }, { 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, /*len*/ 0, -1 }, { 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, 110 }, { 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, /*len*/ 0, -1 }, { 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, 110 }, { 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, /*len*/ 0, -1 }, { 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, 110 }, { 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, /*len*/ 0, -1 }, { 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, 0, 1, 110 }, { 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, /*len*/ 0, -1 }, { 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, /*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, 900 }, { 115, BARCODE_DOTCODE, 0, 0, -1, 0, 200, 0, -1, 1, 900 },
{ 116, BARCODE_HANXIN, 0, -1, 5, 0, 84, ZINT_FULL_MULTIBYTE, 1, 7827 }, { 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, /*len*/ 0, -1 }, { 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, /*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, DM_SQUARE | DM_ISO_144, 28, 90 }, { 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, 12, 13 }, { 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, 14, 26 }, { 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, /*len*/ 0, -1 }, { 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, /*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, /*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, /*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, /*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, /*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, 3 }, { 128, BARCODE_AZRUNE, NEON_F, 0, -1, 0, -1, 0, -1, 1, 3 },
{ 129, BARCODE_CODE32, NEON_F, 0, -1, 0, -1, 0, 1, 8 }, { 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, 338 }, { 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, 2361 }, { 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, 338 }, { 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, 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, 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, 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, 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, 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, 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, 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, 7 }, { 140, BARCODE_CHANNEL, NEON_F, 0, -1, 3, 8, 0, -1, 1, 7 },
{ 141, BARCODE_CODEONE, 0, 0, -1, 0, 10, 0, 1, 3550 }, { 141, BARCODE_CODEONE, 0, 0, -1, 0, 10, 0, -1, 1, 3550 },
{ 142, BARCODE_GRIDMATRIX, 0, 0, 5, 0, 13, ZINT_FULL_MULTIBYTE, 1, 1751 }, { 142, BARCODE_GRIDMATRIX, 0, 0, 5, 0, 13, 200, 200, 1, 1751 },
{ 143, BARCODE_UPNQR, 0, 0, -1, 0, -1, ZINT_FULL_MULTIBYTE, 1, 411 }, { 143, BARCODE_UPNQR, 0, 0, -1, 0, -1, 200, 200, 1, 411 },
{ 144, BARCODE_ULTRA, 0, -1, 5, 0, 2, ULTRA_COMPRESSION, 1, 504 }, { 144, BARCODE_ULTRA, 0, -1, 5, 0, 2, 128, 128, 1, 504 },
{ 145, BARCODE_RMQR, 0, -1, 4, 0, 38, 0, 1, 361 }, { 145, BARCODE_RMQR, 0, -1, 4, 0, 38, 0, -1, 1, 361 },
{ 146, BARCODE_BC412, ARSENIC_F, 0, -1, 0, -1, 0, 7, 18 }, { 146, BARCODE_BC412, ARSENIC_F, 0, -1, 0, -1, 0, -1, 7, 18 },
{ 147, BARCODE_DXFILMEDGE, SILVER_F, 0, -1, 0, -1, 0, 1, 10 }, { 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, 335 }, { 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, 338 }, { 149, BARCODE_EAN13_CC, SODIUM_PLS_F, 0, 2, 0, -1, 0, -1, 1, 338 },
}; };
/* Make sure value `v` is between `min` and `max` */ /* 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` */ /* `option_3` */
if (length > si->len_min && si->option_3) { if (length > si->len_min && (si->option_3_min <= si->option_3_max)) {
if (*input++ & 1) { /* Odd/even */ if (si->option_3_min + 1 == si->option_3_max) { /* Only one in it? */
symbol->option_3 = si->option_3; 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--; 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) { if (length > si->len_min) {
symbol->output_options = *input++ & OUTPUT_OPTIONS_MASK; symbol->output_options = *input++ & OUTPUT_OPTIONS_MASK;
length--; length--;
} }
#endif
if (length > si->len_max) { if (length > si->len_max) {
return 0; return 0;
@@ -414,5 +424,54 @@ static int set_symbol(struct zint_symbol *symbol, const int idx, const int chk_s
return length; 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 : */ /* vim: set ts=4 sw=4 et : */
#endif /* Z_FUZZ_H */ #endif /* Z_FUZZ_H */
+15 -3
View File
@@ -1,7 +1,7 @@
/* fuzz_data.c - fuzzer for libzint (DATA_MODE, all symbologies except GS1_128, DBAR_EXP/STK & composites) */ /* fuzz_data.c - fuzzer for libzint (DATA_MODE, all symbologies except GS1_128, DBAR_EXP/STK & composites) */
/* /*
libzint - the open source barcode library 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 Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions modification, are permitted provided that the following conditions
@@ -36,13 +36,24 @@ extern "C" {
#if 0 #if 0
#define Z_FUZZ_DEBUG /* Set `symbol->debug` flag */ #define Z_FUZZ_DEBUG /* Set `symbol->debug` flag */
#define Z_FUZZ_SET_OUTPUT_OPTIONS /* Set `symbol->output_options` */
#endif #endif
#include "fuzz.h" #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) { int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
struct zint_symbol *symbol; struct zint_symbol *symbol;
int idx; int idx;
unsigned char *buf; /* Dummy, used by "fuzz_gs1.c" */
#endif
(void)buf;
/* Ignore empty or very large input */ /* Ignore empty or very large input */
if (size < 1 || size > 10000) { if (size < 1 || size > 10000) {
@@ -70,8 +81,9 @@ int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
if (!length) { if (!length) {
continue; 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); assert(ret != ZINT_ERROR_ENCODING_PROBLEM);
} }
Binary file not shown.
+35 -10
View File
@@ -36,20 +36,30 @@ extern "C" {
#if 0 #if 0
#define Z_FUZZ_DEBUG /* Set `symbol->debug` flag */ #define Z_FUZZ_DEBUG /* Set `symbol->debug` flag */
#define Z_FUZZ_SET_OUTPUT_OPTIONS /* Set `symbol->output_options` */
#endif #endif
#include "fuzz.h" #include "fuzz.h"
int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
static const int symbologies[] = { static const int symbologies[] = {
BARCODE_AZTEC, BARCODE_CODE16K, BARCODE_CODE49, BARCODE_CODEONE, BARCODE_DATAMATRIX, BARCODE_DBAR_EXP, 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_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_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, 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) {
struct zint_symbol *symbol; struct zint_symbol *symbol;
unsigned char *gs1_buf;
int i; int i;
unsigned char *gs1_buf;
#endif
/* Ignore empty or very large input */ /* Ignore empty or very large input */
if (size < 1 || size > 10000) { if (size < 1 || size > 10000) {
@@ -65,12 +75,16 @@ int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
gs1_buf[1] = ']'; gs1_buf[1] = ']';
for (i = 0; i < ZARRAY_SIZE(symbologies); i++) { 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_ai[] = "[01]12345678901231";
static const char primary_upce[] = "12345670"; static const char primary_upce[] = "12345670";
static const char primary[] = "123456789012"; static const char primary[] = "123456789012";
const int idx = symbologies[i]; const int idx = symbologies[i];
const int is_composite = ZBarcode_Cap(idx, ZINT_CAP_COMPOSITE) & ZINT_CAP_COMPOSITE; const int is_composite = ZBarcode_Cap(idx, ZINT_CAP_COMPOSITE) & ZINT_CAP_COMPOSITE;
const unsigned char *input; const unsigned char *input;
int input_mode;
int length; int length;
int ret; int ret;
@@ -81,10 +95,21 @@ int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
if (!length) { if (!length) {
continue; continue;
} }
input_mode = symbol->input_mode;
symbol->output_options |= BARCODE_MEMORY_FILE;
if (is_composite) { if (is_composite) {
if (idx == BARCODE_GS1_128_CC || idx == BARCODE_DBAR_EXP_CC || idx == BARCODE_DBAR_EXPSTK_CC) { if (idx == BARCODE_GS1_128_CC || idx == BARCODE_DBAR_EXP_CC || idx == BARCODE_DBAR_EXPSTK_CC) {
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)); memcpy(symbol->primary, primary_ai, sizeof(primary_ai));
}
} else if (idx == BARCODE_UPCE_CC) { } else if (idx == BARCODE_UPCE_CC) {
memcpy(symbol->primary, primary_upce, sizeof(primary_upce)); memcpy(symbol->primary, primary_upce, sizeof(primary_upce));
} else { } else {
@@ -92,21 +117,21 @@ int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size) {
} }
} }
/* Try it first without GS1NOCHECK_MODE */ /* Try it first with GS1NOCHECK_MODE */
symbol->input_mode = (symbol->input_mode & ~0x07) | GS1_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); assert(ret != ZINT_ERROR_ENCODING_PROBLEM);
ZBarcode_Clear(symbol); ZBarcode_Clear(symbol);
/* Now with GS1NOCHECK_MODE */ /* Now without GS1NOCHECK_MODE */
symbol->input_mode = (symbol->input_mode & ~0x07) | GS1_MODE | GS1NOCHECK_MODE; symbol->input_mode = (input_mode & ~0x07) | GS1_MODE;
symbol->input_mode &= ~GS1PARENS_MODE; symbol->input_mode &= ~GS1NOCHECK_MODE;
memcpy(gs1_buf + 2, input, length); 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); assert(ret != ZINT_ERROR_ENCODING_PROBLEM);
} }
+8 -8
View File
@@ -1,10 +1,10 @@
"[10]"
"[91]"
"^"
"^10"
"^91"
"10"
"91"
"\x1D"
"%" "%"
"%%" "%%"
"[01]"
"[10]"
"[15]"
"[17]"
"[20]"
"[3103]"
"[3202]"
"[91]"
Binary file not shown.
+71 -57
View File
@@ -6,7 +6,7 @@
rm -rf fuzz_data_corpus fuzz_gs1_corpus rm -rf fuzz_data_corpus fuzz_gs1_corpus
rm -f fuzz_data_seed_corpus.zip fuzz_gs1_seed_corpus.zip 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 ./gen_corpora
zip -j fuzz_data_seed_corpus.zip fuzz_data_corpus/* zip -j fuzz_data_seed_corpus.zip fuzz_data_corpus/*
zip -j fuzz_gs1_seed_corpus.zip fuzz_gs1_corpus/* zip -j fuzz_gs1_seed_corpus.zip fuzz_gs1_corpus/*
@@ -59,29 +59,32 @@ struct item {
int test_fuzz_idx; int test_fuzz_idx;
int symbology; int symbology;
int input_mode; int input_mode;
int output_options;
int eci; int eci;
int option_1; int option_1;
int option_2; int option_2;
int option_3; int option_3;
float height;
int border_width;
char *data; char *data;
int length; int length;
}; };
/* DATA_MODE data */ /* DATA_MODE data */
static const struct item data_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 */ /* 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, -1, -1, -1, -1, "{{-06\024755712162106130000000829203983\377", -1 }, /* #232 Jan Schrewe, CI-Fuzz, out-of-bounds in is_last_single_ascii() sp + 1 */ /* 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, -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) */ /* 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, -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) */ /* 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, -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 */ /* 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, -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) */ /* 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, -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 */ /* 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, -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 }, /* 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, -1, -1, -1, -1, "0404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404", 136 }, /* 8*/ { 3, BARCODE_TELEPEN_NUM, -1, 0, -1, -1, -1, -1, 0, 0, "0404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404040404", 136 },
/* 9*/ { 5, BARCODE_TELEPEN_NUM, -1, -1, -1, -1, -1, "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000X", 136 }, /* 9*/ { 5, BARCODE_TELEPEN_NUM, -1, 0, -1, -1, -1, -1, 0, 0, "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000X", 136 },
/* 10*/ { 6, BARCODE_TELEPEN_NUM, -1, -1, -1, -1, -1, "9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", 136 }, /* 10*/ { 6, BARCODE_TELEPEN_NUM, -1, 0, -1, -1, -1, -1, 0, 0, "9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", 136 },
/* 11*/ { 0, BARCODE_CODABLOCKF, -1, -1, -1, -1, -1, "\034\034I", 3 }, /* #181 Christian Hartlage OSS-Fuzz */ /* 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, -1, -1, -1, -1, /* 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" "\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" "\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" "\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" "\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 "\135\335\135\060\060\010\010\010\010\010\060", 2251
}, /* Original OSS-Fuzz triggering data for malloc leak */ }, /* 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\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\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" "\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" "\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 "\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 */ }, /* 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" "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
"123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890" "123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890"
@@ -280,7 +283,7 @@ static const struct item data_data[] = {
"1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123", "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123",
4483 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 */ }, /* 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" "\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" "\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" "\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", "\377\377\103\377\364\377\364",
2167 2167
}, /* #300 (#2) Andre Maute */ }, /* #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" "\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" "\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" "\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", "\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 2157
}, /* #300 (#3) Andre Maute */ }, /* #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" "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000"
"\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\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", "\000\000\000\000\000\000\000\000\000\000\000\000\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 996
}, /* Padding 11 example causing issue with ZXing-C++ */ }, /* 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" "\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" "\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" "\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", "\010\060",
4402 4402
}, /* fuzz_data (1st) */ }, /* 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" "\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\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" "\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", "\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 1001
}, /* Original OSS-Fuzz triggering data */ }, /* 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" "\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\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" "\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", "\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 1001
}, /* Original OSS-Fuzz triggering data */ }, /* 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\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\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" "\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", "\000\000\000\000\000\000\000\000",
1048 1048
}, /* #300 (#1) Andre Maute (`pdf_text_submode_length()` not checking if previous/next BYT) */ }, /* #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\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" "\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" "\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", "\162\162\001\100\167\167\001\044\204\167\167",
2611 2611
}, /* #300 (#7) Andre Maute */ }, /* #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\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" "\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" "\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", "\162\162\001\100\167\167\001\044\204\167\167",
2611 2611
}, /* #300 (#7) Andre Maute !FAST_MODE */ }, /* #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\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" "\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" "\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", "\057\262\054\377\134\134\142\153\330\153",
2690 2690
}, /* #300 (#10) Andre Maute */ }, /* #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 */ /* 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, 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 */ /* 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, -1, -1, -1, -1, "A\000\000\000", 4 }, /* #181 Christian Hartlage OSS-Fuzz */ /* 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, -1, -1, -1, -1, "1\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, -1, -1, -1, -1, "55++15", -1, }, /* #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, -1, -1, -1, -1, "+123456789012345678", -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, -1, -1, -1, -1, "+12345", -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, -1, -1, -1, -1, "+123456", -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, -1, -1, -1, -1, "000002000000200+203", -1 }, /* #218 Jan Schrewe CI-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, -1, -1, -1, -1, "(\207'", -1 }, /* #181 Christian Hartlage / Nico Gunkel OSS-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, -1, -1, -1, -1, /* 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" "\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" "\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" "\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", "\071\071\071\071\071",
421 421
}, /* Original OSS-Fuzz triggering data for index out of bounds (encoding of HT/FS/GS/RS when shifting to code set B) */ }, /* 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 */ /* 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, -1, -1, -1, -1, "\241\034", -1 }, /* As above L793 */ /* 37*/ { 3, BARCODE_DOTCODE, -1, 0, -1, -1, -1, -1, 0, 0, "\241\034", -1 }, /* As above L793 */
/* 38*/ { 4, BARCODE_DOTCODE, -1, -1, -1, -1, -1, "\270\036", -1 }, /* As above L799 */ /* 38*/ { 4, BARCODE_DOTCODE, -1, 0, -1, -1, -1, -1, 0, 0, "\270\036", -1 }, /* As above L799 */
/* 39*/ { 5, BARCODE_DOTCODE, -1, -1, -1, -1, -1, "\237\032", -1 }, /* As above L904 */ /* 39*/ { 5, BARCODE_DOTCODE, -1, 0, -1, -1, -1, -1, 0, 0, "\237\032", -1 }, /* As above L904 */
/* 40*/ { 6, BARCODE_DOTCODE, -1, -1, -1, -1, -1, "\237", -1 }, /* As above L1090 */ /* 40*/ { 6, BARCODE_DOTCODE, -1, 0, -1, -1, -1, -1, 0, 0, "\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 */ /* 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, -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 */ /* 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, -1, -1, -1, -1, /* 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" "\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\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" "\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", "\136\136",
162 162
}, /* fuzz_data (2nd) */ }, /* 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 */ /* GS1_MODE data */
static const struct item gs1_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 */ /* 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, -1, -1, -1, -1, "()111%", -1 }, /* #300 (#5), Andre Maute (`dbar_date()` not checking length + other non-checks) */ /* 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, -1, -1, -1, -1, "()90", -1, }, /* #300 (#6), 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, -1, -1, -1, -1, "()904OOOOO)CK0336680OOOOOOOOOOOOOO29[0kkkk%%%%(", -1 }, /* #300 (#11), Andre Maute (`gs1_verify()` not checking length on resolve AI data loop) */ /* 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, -1, 3, -1, -1, "[]RRR___________________KKKRRR0000", -1 }, /* #300 (#13), Andre Maute (`calc_padding_ccc()` dividing by zero when linear width == 68) */ /* 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) */ /* 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) { if (data[i].input_mode != -1) {
/* Shift out DATA/UNICODE/GS1_MODE (shifted back in `set_symbol()` in "fuzz.h") */ /* 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 { } 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) { 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) { 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)) { 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) { if (si->option_3_min <= si->option_3_max) {
write_setting(filename, data[i].option_3 != -1, 0, fp); 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); ret = fwrite(data[i].data, sizeof(char), length, fp);
if (ret != length) { if (ret != length) {
+3 -3
View File
@@ -1,6 +1,6 @@
/* /*
libzint - the open source barcode library libzint - the open source barcode library
Copyright (C) 2021-2025 Robin Stuart <rstuart114@gmail.com> Copyright (C) 2021-2026 Robin Stuart <rstuart114@gmail.com>
Redistribution and use in source and binary forms, with or without Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions modification, are permitted provided that the following conditions
@@ -260,9 +260,9 @@ static void test_set_whitespace_offsets(const testCtx *const p_ctx) {
/* 5*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BIND_TOP, 0, 0, 1.0f, /*expected*/ 2.0f, 4.0f, 2.0f, 3.0f, 0.0f }, /* 5*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BIND_TOP, 0, 0, 1.0f, /*expected*/ 2.0f, 4.0f, 2.0f, 3.0f, 0.0f },
/* 6*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BIND_TOP | BARCODE_BIND, 0, 0, 1.0f, /*expected*/ 2.0f, 4.0f, 2.0f, 3.0f, 0.0f }, /* BIND_TOP wins */ /* 6*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BIND_TOP | BARCODE_BIND, 0, 0, 1.0f, /*expected*/ 2.0f, 4.0f, 2.0f, 3.0f, 0.0f }, /* BIND_TOP wins */
/* 7*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BOX, 0, 0, 1.0f, /*expected*/ 3.0f, 4.0f, 3.0f, 4.0f, 0.0f }, /* 7*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BOX, 0, 0, 1.0f, /*expected*/ 3.0f, 4.0f, 3.0f, 4.0f, 0.0f },
/* 8*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BIND_TOP | BARCODE_BOX, 0, 0, 1.0f, /*expected*/ 3.0f, 4.0f, 3.0f, 3.0f, 0.0f }, /* BIND_TOP wins */ /* 8*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BIND_TOP | BARCODE_BOX, 0, 0, 1.0f, /*expected*/ 2.0f, 4.0f, 2.0f, 3.0f, 0.0f }, /* BIND_TOP wins */
/* 9*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BOX | BARCODE_BIND, 0, 0, 1.0f, /*expected*/ 3.0f, 4.0f, 3.0f, 4.0f, 0.0f }, /* BIND_BOX wins */ /* 9*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BOX | BARCODE_BIND, 0, 0, 1.0f, /*expected*/ 3.0f, 4.0f, 3.0f, 4.0f, 0.0f }, /* BIND_BOX wins */
/* 10*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BIND_TOP | BARCODE_BOX | BARCODE_BIND, 0, 0, 1.0f, /*expected*/ 3.0f, 4.0f, 3.0f, 3.0f, 0.0f }, /* BIND_TOP wins */ /* 10*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BIND_TOP | BARCODE_BOX | BARCODE_BIND, 0, 0, 1.0f, /*expected*/ 2.0f, 4.0f, 2.0f, 3.0f, 0.0f }, /* BIND_TOP wins */
/* 11*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BOX | BARCODE_QUIET_ZONES, 0, 0, 1.0f, /*expected*/ 13.0f, 4.0f, 13.0f, 4.0f, 10.0f }, /* 11*/ { BARCODE_CODE128, 2, 3, 1, BARCODE_BOX | BARCODE_QUIET_ZONES, 0, 0, 1.0f, /*expected*/ 13.0f, 4.0f, 13.0f, 4.0f, 10.0f },
}; };
const int data_size = ARRAY_SIZE(data); const int data_size = ARRAY_SIZE(data);
+31 -23
View File
@@ -1044,29 +1044,37 @@ static void test_output_options(const testCtx *const p_ctx) {
/* 70*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BOX, 0, 0, "A123", 0, 165, 33, 30, 299 + 50 * 2, 298 + 50 * 2, 0, 347, 50 }, /* 70*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BOX, 0, 0, "A123", 0, 165, 33, 30, 299 + 50 * 2, 298 + 50 * 2, 0, 347, 50 },
/* 71*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, 0, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 1, 50, 15 }, /* 71*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND, 0, 0, "A123", 0, 165, 33, 30, 299, 298 + 50 * 2, 1, 50, 15 },
/* 72*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND | BARCODE_QUIET_ZONES, 0, 0, "A123", 0, 165, 33, 30, 299 + 10 * 2, 298 + (50 + 10) * 2, 0, 50, 15 }, /* 72*/ { BARCODE_MAXICODE, -1, -1, 5, BARCODE_BIND | BARCODE_QUIET_ZONES, 0, 0, "A123", 0, 165, 33, 30, 299 + 10 * 2, 298 + (50 + 10) * 2, 0, 50, 15 },
/* 73*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 0, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 0, 14 }, /* 73*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND, 0, 0, "A123", 0, 165, 33, 30, 299, 298 + 300 * 2, 1, 299, 0 },
/* 74*/ { BARCODE_MAXICODE, 6, -1, -1, -1, 0, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 14 }, /* 74*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND, 0, 0, "A123", 0, 165, 33, 30, 299, 298 + 300 * 2, 0, 300, 0 },
/* 75*/ { BARCODE_MAXICODE, 6, -1, -1, -1, 0, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 47 }, /* 75*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND | BARCODE_BIND_TOP, 0, 0, "A123", 0, 165, 33, 30, 299, 298 + 300, 1, 299, 0 }, /* BIND_TOP trumps BIND */
/* 76*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, 0, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298 + 50 * 2, 1, 0, 47 }, /* 76*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND | BARCODE_BIND_TOP, 0, 0, "A123", 0, 165, 33, 30, 299, 298 + 300, 0, 300, 0 },
/* 77*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, 0, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298 + 50 * 2, 0, 50, 0 }, /* 77*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BOX, 0, 0, "A123", 0, 165, 33, 30, 299 + 300 * 2, 298 + 300 * 2, 1, 300, 299 },
/* 78*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BOX, 0, 0, "A123", 0, 165, 33, 30, 299 + (60 + 50) * 2, 298 + 50 * 2, 1, 50, 0 }, /* 78*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BOX, 0, 0, "A123", 0, 165, 33, 30, 299 + 300 * 2, 298 + 300 * 2, 0, 300, 300 },
/* 79*/ { BARCODE_MAXICODE, -1, -1, -1, BARCODE_DOTTY_MODE, 0, 0, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 }, /* 79*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BOX | BARCODE_BIND_TOP, 0, 0, "A123", 0, 165, 33, 30, 299, 298 + 300, 1, 299, 0 }, /* BIND_TOP trumps BOX */
/* 80*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 4, 4 }, /* 80*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BOX | BARCODE_BIND_TOP, 0, 0, "A123", 0, 165, 33, 30, 299, 298 + 300, 0, 300, 0 },
/* 81*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 4, 14 }, /* 81*/ { BARCODE_MAXICODE, -1, -1, -1, -1, 0, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 0, 14 },
/* 82*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 270, 0, "A123", 0, 165, 33, 30, 298, 299, 1, 4, 4 }, /* 82*/ { BARCODE_MAXICODE, 6, -1, -1, -1, 0, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 14 },
/* 83*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 270, 0, "A123", 0, 165, 33, 30, 298, 299, 0, 4, 14 }, /* 83*/ { BARCODE_MAXICODE, 6, -1, -1, -1, 0, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298, 0, 0, 47 },
/* 84*/ { BARCODE_ITF14, -1, -1, -1, -1, 0, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 }, /* 84*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, 0, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298 + 50 * 2, 1, 0, 47 },
/* 85*/ { BARCODE_ITF14, -1, -1, -1, -1, 90, 0, "123", 0, 50, 1, 135, 136, 330, 1, 0, 110 }, /* 85*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, 0, 0, "A123", 0, 165, 33, 30, 299 + 60 * 2, 298 + 50 * 2, 0, 50, 0 },
/* 86*/ { BARCODE_ITF14, -1, -1, 0, -1, 0, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 }, /* 86*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BOX, 0, 0, "A123", 0, 165, 33, 30, 299 + (60 + 50) * 2, 298 + 50 * 2, 1, 50, 0 },
/* 87*/ { BARCODE_ITF14, -1, -1, 0, BARCODE_BOX, 0, 0, "123", 0, 50, 1, 135, 310, 116, 0, 100, 0 }, /* 87*/ { BARCODE_MAXICODE, -1, -1, -1, BARCODE_DOTTY_MODE, 0, 0, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 },
/* 88*/ { BARCODE_ITF14, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 }, /* 88*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, 0, "A123", 0, 165, 33, 30, 299, 298, 0, 4, 4 },
/* 89*/ { BARCODE_ITF14, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 90, 0, "123", 0, 50, 1, 135, 136, 330, 1, 0, 110 }, /* 89*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, 0, "A123", 0, 165, 33, 30, 299, 298, 1, 4, 14 },
/* 90*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, 0, 0, "A123", 0, 20, 2, 101, 242, 44, 1, 43, 24 }, /* 90*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 270, 0, "A123", 0, 165, 33, 30, 298, 299, 1, 4, 4 },
/* 91*/ { BARCODE_CODABLOCKF, -1, -1, -1, BARCODE_BIND_TOP, 0, 0, "A123", 0, 20, 2, 101, 242, 42, 0, 41, 24 }, /* 91*/ { BARCODE_MAXICODE, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 270, 0, "A123", 0, 165, 33, 30, 298, 299, 0, 4, 14 },
/* 92*/ { BARCODE_CODE16K, -1, -1, -1, -1, 0, 0, "A123", 0, 20, 2, 70, 162, 44, 1, 43, 0 }, /* 92*/ { BARCODE_ITF14, -1, -1, -1, -1, 0, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 },
/* 93*/ { BARCODE_CODE16K, -1, -1, -1, BARCODE_BIND_TOP, 0, 0, "A123", 0, 20, 2, 70, 162, 42, 0, 41, 0 }, /* 93*/ { BARCODE_ITF14, -1, -1, -1, -1, 90, 0, "123", 0, 50, 1, 135, 136, 330, 1, 0, 110 },
/* 94*/ { BARCODE_CODE49, -1, -1, -1, -1, 0, 0, "A123", 0, 20, 2, 70, 162, 44, 1, 43, 0 }, /* 94*/ { BARCODE_ITF14, -1, -1, 0, -1, 0, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 },
/* 95*/ { BARCODE_CODE49, -1, -1, -1, BARCODE_BIND_TOP, 0, 0, "A123", 0, 20, 2, 70, 162, 42, 0, 41, 0 }, /* 95*/ { BARCODE_ITF14, -1, -1, 0, BARCODE_BOX, 0, 0, "123", 0, 50, 1, 135, 310, 116, 0, 100, 0 },
/* 96*/ { BARCODE_ITF14, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 0, 0, "123", 0, 50, 1, 135, 330, 136, 1, 110, 0 },
/* 97*/ { BARCODE_ITF14, -1, -1, -1, OUT_BUFFER_INTERMEDIATE, 90, 0, "123", 0, 50, 1, 135, 136, 330, 1, 0, 110 },
/* 98*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, 0, 0, "A123", 0, 20, 2, 101, 242, 44, 1, 43, 24 },
/* 99*/ { BARCODE_CODABLOCKF, -1, -1, -1, BARCODE_BIND_TOP, 0, 0, "A123", 0, 20, 2, 101, 242, 42, 0, 41, 24 },
/*100*/ { BARCODE_CODE16K, -1, -1, -1, -1, 0, 0, "A123", 0, 20, 2, 70, 162, 44, 1, 43, 0 },
/*101*/ { BARCODE_CODE16K, -1, -1, -1, BARCODE_BIND_TOP, 0, 0, "A123", 0, 20, 2, 70, 162, 42, 0, 41, 0 },
/*102*/ { BARCODE_CODE49, -1, -1, -1, -1, 0, 0, "A123", 0, 20, 2, 70, 162, 44, 1, 43, 0 },
/*103*/ { BARCODE_CODE49, -1, -1, -1, BARCODE_BIND_TOP, 0, 0, "A123", 0, 20, 2, 70, 162, 42, 0, 41, 0 },
}; };
const int data_size = ARRAY_SIZE(data); const int data_size = ARRAY_SIZE(data);
int i, length, ret; int i, length, ret;
+18 -10
View File
@@ -1389,16 +1389,24 @@ static void test_output_options(const testCtx *const p_ctx) {
/* 44*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 84, 77.733398, 1, 0, 67.7334 }, /* 44*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 84, 77.733398, 1, 0, 67.7334 },
/* 45*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 84, 77.733398, 0, 94, 10 }, /* 45*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BIND, "A123", 0, 165, 33, 30, 84, 77.733398, 0, 94, 10 },
/* 46*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BOX, "A123", 0, 165, 33, 30, 104, 77.733398, 1, 94, 10 }, /* 46*/ { BARCODE_MAXICODE, 6, -1, 5, BARCODE_BOX, "A123", 0, 165, 33, 30, 104, 77.733398, 1, 94, 10 },
/* 47*/ { BARCODE_MAXICODE, -1, -1, -1, BARCODE_DOTTY_MODE, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 }, /* 47*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND, "A123", 0, 165, 33, 30, 60, 177.733398, 1, 0, 0 },
/* 48*/ { BARCODE_ITF14, -1, -1, -1, -1, "123", 0, 50, 1, 135, 330, 136.28, 1, 320, 10 }, /* 48*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND, "A123", 0, 165, 33, 30, 60, 177.733398, 1, 0, 117.733398 },
/* 49*/ { BARCODE_ITF14, -1, -1, 0, -1, "123", 0, 50, 1, 135, 330, 136.28, 1, 320, 10 }, /* 49*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND_TOP, "A123", 0, 165, 33, 30, 60, 117.733398, 1, 0, 0 },
/* 50*/ { BARCODE_ITF14, -1, -1, 0, BARCODE_BOX, "123", 0, 50, 1, 135, 310, 116.28, 0, 300, 0 }, /* No zero-width/height rectangles */ /* 50*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND_TOP, "A123", 0, 165, 33, 30, 60, 117.733398, 0, 0, 117.733398 },
/* 51*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, "A123", 0, 20, 2, 101, 242, 44, 1, 20, 42 }, /* 51*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND_TOP | BARCODE_BIND, "A123", 0, 165, 33, 30, 60, 117.733398, 1, 0, 0 }, /* BIND_TOP trumps BIND */
/* 52*/ { BARCODE_CODABLOCKF, -1, -1, -1, BARCODE_BIND_TOP, "A123", 0, 20, 2, 101, 242, 42, 0, 20, 42 }, /* 52*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND_TOP | BARCODE_BIND, "A123", 0, 165, 33, 30, 60, 117.733398, 0, 0, 117.733398 },
/* 53*/ { BARCODE_CODE16K, -1, -1, -1, -1, "A123", 0, 20, 2, 70, 162, 44, 1, 0, 42 }, /* 53*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND_TOP | BARCODE_BOX, "A123", 0, 165, 33, 30, 60, 117.733398, 1, 0, 0 }, /* BIND_TOP trumps BOX */
/* 54*/ { BARCODE_CODE16K, -1, -1, -1, BARCODE_BIND_TOP, "A123", 0, 20, 2, 70, 162, 42, 0, 0, 42 }, /* 54*/ { BARCODE_MAXICODE, -1, -1, 30, BARCODE_BIND_TOP | BARCODE_BOX, "A123", 0, 165, 33, 30, 60, 117.733398, 0, 0, 117.733398 },
/* 55*/ { BARCODE_CODE49, -1, -1, -1, -1, "A123", 0, 20, 2, 70, 162, 44, 1, 0, 42 }, /* 55*/ { BARCODE_MAXICODE, -1, -1, -1, BARCODE_DOTTY_MODE, "A123", ZINT_ERROR_INVALID_OPTION, -1, -1, -1, -1, -1, -1, -1, -1 },
/* 56*/ { BARCODE_CODE49, -1, -1, -1, BARCODE_BIND_TOP, "A123", 0, 20, 2, 70, 162, 42, 0, 0, 42 }, /* 56*/ { BARCODE_ITF14, -1, -1, -1, -1, "123", 0, 50, 1, 135, 330, 136.28, 1, 320, 10 },
/* 57*/ { BARCODE_ITF14, -1, -1, 0, -1, "123", 0, 50, 1, 135, 330, 136.28, 1, 320, 10 },
/* 58*/ { BARCODE_ITF14, -1, -1, 0, BARCODE_BOX, "123", 0, 50, 1, 135, 310, 116.28, 0, 300, 0 }, /* No zero-width/height rectangles */
/* 59*/ { BARCODE_CODABLOCKF, -1, -1, -1, -1, "A123", 0, 20, 2, 101, 242, 44, 1, 20, 42 },
/* 60*/ { BARCODE_CODABLOCKF, -1, -1, -1, BARCODE_BIND_TOP, "A123", 0, 20, 2, 101, 242, 42, 0, 20, 42 },
/* 61*/ { BARCODE_CODE16K, -1, -1, -1, -1, "A123", 0, 20, 2, 70, 162, 44, 1, 0, 42 },
/* 62*/ { BARCODE_CODE16K, -1, -1, -1, BARCODE_BIND_TOP, "A123", 0, 20, 2, 70, 162, 42, 0, 0, 42 },
/* 63*/ { BARCODE_CODE49, -1, -1, -1, -1, "A123", 0, 20, 2, 70, 162, 44, 1, 0, 42 },
/* 64*/ { BARCODE_CODE49, -1, -1, -1, BARCODE_BIND_TOP, "A123", 0, 20, 2, 70, 162, 42, 0, 0, 42 },
}; };
int data_size = ARRAY_SIZE(data); int data_size = ARRAY_SIZE(data);
int i, length, ret; int i, length, ret;
+1 -1
View File
@@ -1017,7 +1017,6 @@ INTERNAL int zint_plot_vector(struct zint_symbol *symbol, int rotate_angle, int
last_rect->x = xoffset; last_rect->x = xoffset;
last_rect->width -= xoffset + roffset; last_rect->width -= xoffset + roffset;
} }
}
if (symbol->output_options & BARCODE_BOX) { if (symbol->output_options & BARCODE_BOX) {
const float xbox_right = vector->width - symbol->border_width; const float xbox_right = vector->width - symbol->border_width;
float box_top = yoffset; float box_top = yoffset;
@@ -1037,6 +1036,7 @@ INTERNAL int zint_plot_vector(struct zint_symbol *symbol, int rotate_angle, int
return ZINT_ERROR_MEMORY; return ZINT_ERROR_MEMORY;
} }
} }
}
vector_reduce_rectangles(symbol); vector_reduce_rectangles(symbol);
+7 -6
View File
@@ -1,4 +1,5 @@
% docs/README 2026-03-17 % docs/README 2026-03-22
% vim: set ts=4 sw=4 et :
For generation of "docs/manual.html", "docs/manual.pdf" and "docs/manual.txt" from "manual.pmd" For generation of "docs/manual.html", "docs/manual.pdf" and "docs/manual.txt" from "manual.pmd"
and man pages "docs/zint.1" from "docs/zint.1.pmd" and "docs/zint-qt.1" from "docs/zint-qt.1.pmd" and man pages "docs/zint.1" from "docs/zint.1.pmd" and "docs/zint-qt.1" from "docs/zint-qt.1.pmd"
@@ -6,8 +7,8 @@ using pandoc >= 3.8.2.
On Ubuntu/Debian (tested on Ubuntu 22.04 and Ubuntu 24.04) On Ubuntu/Debian (tested on Ubuntu 22.04 and Ubuntu 24.04)
wget https://github.com/jgm/pandoc/releases/download/3.9/pandoc-3.9-1-amd64.deb wget https://github.com/jgm/pandoc/releases/download/3.9.0.2/pandoc-3.9.0.2-1-amd64.deb
sudo dpkg -i pandoc-3.9-1-amd64.deb sudo dpkg -i pandoc-3.9.0.2-1-amd64.deb
sudo apt install librsvg2-bin sudo apt install librsvg2-bin
sudo apt install texlive-xetex sudo apt install texlive-xetex
sudo apt install texlive-lang-cjk sudo apt install texlive-lang-cjk
@@ -16,9 +17,9 @@ On Ubuntu/Debian (tested on Ubuntu 22.04 and Ubuntu 24.04)
On Fedora (tested on Fedora Linux 38 (Workstation Edition) and Fedora Linux 42 (Workstation Edition)) On Fedora (tested on Fedora Linux 38 (Workstation Edition) and Fedora Linux 42 (Workstation Edition))
wget https://github.com/jgm/pandoc/releases/download/3.9/pandoc-3.9-linux-amd64.tar.gz wget https://github.com/jgm/pandoc/releases/download/3.9.0.2/pandoc-3.9.0.2-linux-amd64.tar.gz
tar xf pandoc-3.9-linux-amd64.tar.gz tar xf pandoc-3.9.0.2-linux-amd64.tar.gz
sudo mv -i pandoc-3.9/bin/pandoc /usr/local/bin sudo mv -i pandoc-3.9.0.2/bin/pandoc /usr/local/bin
sudo dnf install librsvg2-tools.x86_64 sudo dnf install librsvg2-tools.x86_64
sudo dnf install texlive-xetex sudo dnf install texlive-xetex
sudo dnf install texlive-ctex.noarch sudo dnf install texlive-ctex.noarch
+1 -1
View File
@@ -1,4 +1,4 @@
.\" Automatically generated by Pandoc 3.9 .\" Automatically generated by Pandoc 3.9.0.2
.\" .\"
.TH "ZINT\-QT" "1" "March 2026" "Version 2.16.0.9" .TH "ZINT\-QT" "1" "March 2026" "Version 2.16.0.9"
.SH NAME .SH NAME