mirror of
https://git.code.sf.net/p/zint/code
synced 2025-05-27 13:34:19 -04:00
QRCODE: fix out-of-bounds crash due to incorrect mode costings for
GS1 percents in `qr_in_alpha()`, ticket #300, props Andre Maute; also defensively re-calc version 40 mode to prevent possible further crashes common: move `debug_print_escape()` from library to common
This commit is contained in:
parent
db92c7de57
commit
888db0bf00
13 changed files with 445 additions and 205 deletions
|
@ -522,30 +522,43 @@ const char *testUtilInputModeName(int input_mode) {
|
|||
}
|
||||
|
||||
/* Pretty name for option 3 */
|
||||
const char *testUtilOption3Name(int option_3) {
|
||||
const char *testUtilOption3Name(int symbology, int option_3) {
|
||||
static char buffer[64];
|
||||
|
||||
const char *name = NULL;
|
||||
const unsigned int high_byte = option_3 == -1 ? 0 : (option_3 >> 8) & 0xFF;
|
||||
|
||||
if ((option_3 & 0x7F) == DM_SQUARE) {
|
||||
if ((option_3 & DM_ISO_144) == DM_ISO_144) {
|
||||
name = "DM_SQUARE | DM_ISO_144";
|
||||
if (symbology == BARCODE_DATAMATRIX || symbology == BARCODE_HIBC_DM) {
|
||||
if ((option_3 & 0x7F) == DM_SQUARE) {
|
||||
if ((option_3 & DM_ISO_144) == DM_ISO_144) {
|
||||
name = "DM_SQUARE | DM_ISO_144";
|
||||
} else {
|
||||
name = "DM_SQUARE";
|
||||
}
|
||||
} else if ((option_3 & 0x7F) == DM_DMRE) {
|
||||
if ((option_3 & DM_ISO_144) == DM_ISO_144) {
|
||||
name = "DM_DMRE | DM_ISO_144";
|
||||
} else {
|
||||
name = "DM_DMRE";
|
||||
}
|
||||
} else if ((option_3 & DM_ISO_144) == DM_ISO_144) {
|
||||
name = "DM_ISO_144";
|
||||
} else {
|
||||
name = "DM_SQUARE";
|
||||
name = (option_3 & 0xFF) ? "-1" : "0";
|
||||
}
|
||||
} else if ((option_3 & 0x7F) == DM_DMRE) {
|
||||
if ((option_3 & DM_ISO_144) == DM_ISO_144) {
|
||||
name = "DM_DMRE | DM_ISO_144";
|
||||
} else if (symbology == BARCODE_QRCODE || symbology == BARCODE_HIBC_QR || symbology == BARCODE_MICROQR
|
||||
|| symbology == BARCODE_RMQR || symbology == BARCODE_GRIDMATRIX || symbology == BARCODE_HANXIN) {
|
||||
if ((option_3 & 0xFF) == ZINT_FULL_MULTIBYTE) {
|
||||
name = "ZINT_FULL_MULTIBYTE";
|
||||
} else {
|
||||
name = "DM_DMRE";
|
||||
name = (option_3 & 0xFF) ? "-1" : "0";
|
||||
}
|
||||
} else if (symbology == BARCODE_ULTRA) {
|
||||
if ((option_3 & 0xFF) == ULTRA_COMPRESSION) {
|
||||
name = "ULTRA_COMPRESSION";
|
||||
} else {
|
||||
name = (option_3 & 0xFF) ? "-1" : "0";
|
||||
}
|
||||
} else if ((option_3 & DM_ISO_144) == DM_ISO_144) {
|
||||
name = "DM_ISO_144";
|
||||
} else if ((option_3 & 0xFF) == ZINT_FULL_MULTIBYTE) {
|
||||
name = "ZINT_FULL_MULTIBYTE";
|
||||
} else if ((option_3 & 0xFF) == ULTRA_COMPRESSION) {
|
||||
name = "ULTRA_COMPRESSION";
|
||||
} else {
|
||||
if (option_3 != -1 && (option_3 & 0xFF) != 0) {
|
||||
fprintf(stderr, "testUtilOption3Name: unknown value (%d)\n", option_3);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue