UPCEAN: Check for multiple + characters in input

Fixes #181 reported by Christian Hartlage
This commit is contained in:
Robin Stuart 2020-02-15 21:28:40 +00:00
parent 0c5dc4d030
commit ee291e45d6

View File

@ -698,7 +698,7 @@ INTERNAL int eanx(struct zint_symbol *symbol, unsigned char source[], int src_le
unsigned char first_part[20] = {0}, second_part[20] = {0}, dest[1000] = {0}; unsigned char first_part[20] = {0}, second_part[20] = {0}, dest[1000] = {0};
unsigned char local_source[20] = {0}; unsigned char local_source[20] = {0};
unsigned int latch, reader, writer, with_addon; unsigned int latch, reader, writer, with_addon;
int error_number, i; int error_number, i, plus_count;
with_addon = FALSE; with_addon = FALSE;
@ -724,6 +724,18 @@ INTERNAL int eanx(struct zint_symbol *symbol, unsigned char source[], int src_le
} }
} }
/* Check for multiple '+' characters */
plus_count = 0;
for (i = 0; i < src_len; i++) {
if (source[i] == '+') {
plus_count++;
}
}
if (plus_count > 1) {
strcpy(symbol->errtxt, "293: Invalid add-on data");
return ZINT_ERROR_INVALID_DATA;
}
/* Add leading zeroes */ /* Add leading zeroes */
ustrcpy(local_source, (unsigned char *) ""); ustrcpy(local_source, (unsigned char *) "");
if (symbol->symbology == BARCODE_ISBNX) { if (symbol->symbology == BARCODE_ISBNX) {