diff --git a/Makefile b/Makefile index 2f90505..05d9a02 100644 --- a/Makefile +++ b/Makefile @@ -77,7 +77,7 @@ $(BACKENDS): $(EXEC_NAME) $(LN) -sf $(EXEC_NAME) $@ cppcheck: - $(CPPCHECK) -q -v --std=c99 --enable=all -I/usr/include $(CPPFLAGS) $(SOURCES) + $(CPPCHECK) -q -v --std=c99 --enable=all --suppress=variableScope --suppress=selfAssignment --suppress=unusedStructMember -I. -I/usr/include -DCORRTABLE_PATH=\"$(BACKEND_DATA_DIR)\" --include=lib70x/libMitsuD70ImageReProcess.h $(CPPFLAGS) $(SOURCES) install: $(MKDIR) -p $(CUPS_BACKEND_DIR) diff --git a/backend_canonselphy.c b/backend_canonselphy.c index e54a41b..e191594 100644 --- a/backend_canonselphy.c +++ b/backend_canonselphy.c @@ -589,6 +589,9 @@ static int canonselphy_get_status(struct canonselphy_ctx *ctx) /* Read in the printer status, twice. */ ret = read_data(ctx->dev, ctx->endp_up, (uint8_t*) rdbuf, READBACK_LEN, &num); + if (ret < 0) + return CUPS_BACKEND_FAILED; + ret = read_data(ctx->dev, ctx->endp_up, (uint8_t*) rdbuf, READBACK_LEN, &num); @@ -750,7 +753,7 @@ static int canonselphy_read_parse(void *vctx, int data_fd) return CUPS_BACKEND_CANCEL; } - if (ctx->printer->type != ctx->type) { + if (printer_type != ctx->type) { ERROR("Printer/Job mismatch (%d/%d)\n", ctx->type, ctx->printer->type); return CUPS_BACKEND_CANCEL; } @@ -1112,7 +1115,7 @@ static const char *canonselphy_prefixes[] = { struct dyesub_backend canonselphy_backend = { .name = "Canon SELPHY CP/ES (legacy)", - .version = "0.98", + .version = "0.99", .uri_prefixes = canonselphy_prefixes, .cmdline_usage = canonselphy_cmdline, .cmdline_arg = canonselphy_cmdline_arg, diff --git a/backend_canonselphyneo.c b/backend_canonselphyneo.c index 4e831ef..fd24336 100644 --- a/backend_canonselphyneo.c +++ b/backend_canonselphyneo.c @@ -285,6 +285,9 @@ static int selphyneo_main_loop(void *vctx, int copies) { ret = read_data(ctx->dev, ctx->endp_up, (uint8_t*) &rdback, sizeof(rdback), &num); + if (ret < 0) + return CUPS_BACKEND_FAILED; + /* And again, for the markers */ ret = read_data(ctx->dev, ctx->endp_up, (uint8_t*) &rdback, sizeof(rdback), &num); @@ -435,7 +438,7 @@ static const char *canonselphyneo_prefixes[] = { struct dyesub_backend canonselphyneo_backend = { .name = "Canon SELPHY CP (new)", - .version = "0.13", + .version = "0.14", .uri_prefixes = canonselphyneo_prefixes, .cmdline_usage = selphyneo_cmdline, .cmdline_arg = selphyneo_cmdline_arg, diff --git a/backend_common.c b/backend_common.c index 943dd35..7737604 100644 --- a/backend_common.c +++ b/backend_common.c @@ -29,7 +29,7 @@ #include "backend_common.h" -#define BACKEND_VERSION "0.78" +#define BACKEND_VERSION "0.79" #ifndef URI_PREFIX #error "Must Define URI_PREFIX" #endif @@ -840,7 +840,6 @@ int main (int argc, char **argv) struct libusb_context *ctx = NULL; struct libusb_device **list = NULL; struct libusb_device_handle *dev; - struct libusb_config_descriptor *config = NULL; struct dyesub_backend *backend = NULL; void * backend_ctx = NULL; @@ -1033,9 +1032,6 @@ int main (int argc, char **argv) } } - if (config) - libusb_free_config_descriptor(config); - /* Initialize backend */ DEBUG("Initializing '%s' backend (version %s)\n", backend->name, backend->version); diff --git a/backend_dnpds40.c b/backend_dnpds40.c index ba7ecb3..5dba42e 100644 --- a/backend_dnpds40.c +++ b/backend_dnpds40.c @@ -1277,7 +1277,7 @@ parsed: } if (dpi == 334 && ctx->type != P_CITIZEN_CW01) { - ERROR("Illegal resolution (%d) for printer!\n", dpi); + ERROR("Illegal resolution (%u) for printer!\n", dpi); return CUPS_BACKEND_CANCEL; } @@ -1358,7 +1358,7 @@ parsed: break; case 600: //"A4" if (ctx->multicut < MULTICUT_A5 || ctx->multicut > MULTICUT_A4x5X2) { - ERROR("Incorrect media for job loaded (%d vs %d)\n", ctx->media, ctx->multicut); + ERROR("Incorrect media for job loaded (%u vs %u)\n", ctx->media, ctx->multicut); return CUPS_BACKEND_CANCEL; } /* A4xn and A5 can be rewound */ @@ -2720,7 +2720,7 @@ static const char *dnpds40_prefixes[] = { /* Exported */ struct dyesub_backend dnpds40_backend = { .name = "DNP DS-series / Citizen C-series", - .version = "0.99", + .version = "0.100", .uri_prefixes = dnpds40_prefixes, .cmdline_usage = dnpds40_cmdline, .cmdline_arg = dnpds40_cmdline_arg, @@ -2768,8 +2768,10 @@ static int cw01_read_parse(struct dnpds40_ctx *ctx, int data_fd, while (remain) { i = read(data_fd, buf + j, remain); - if (i < 0) + if (i < 0) { + free(buf); return i; + } remain -= i; j += i; diff --git a/backend_magicard.c b/backend_magicard.c index baf0665..63f9e96 100644 --- a/backend_magicard.c +++ b/backend_magicard.c @@ -733,11 +733,13 @@ static int magicard_read_parse(void *vctx, int data_fd) { while (remain > 0) { i = read(data_fd, srcbuf + srcbuf_offset, remain); if (i < 0) { - ERROR("Data Read Error: %d (%d) @%d)\n", i, remain, srcbuf_offset); + ERROR("Data Read Error: %d (%u) @%u)\n", i, remain, srcbuf_offset); + free(srcbuf); return i; } if (i == 0) { - ERROR("Short read! (%d/%d)\n", i, remain); + ERROR("Short read! (%d/%u)\n", i, remain); + free(srcbuf); return CUPS_BACKEND_CANCEL; } srcbuf_offset += i; @@ -794,11 +796,11 @@ static int magicard_read_parse(void *vctx, int data_fd) { while (remain > 0) { i = read(data_fd, ctx->databuf + ctx->datalen, remain); if (i < 0) { - ERROR("Data Read Error: %d (%d) @%d)\n", i, remain, ctx->datalen); + ERROR("Data Read Error: %d (%u) @%d)\n", i, remain, ctx->datalen); return i; } if (i == 0) { - ERROR("Short read! (%d/%d)\n", i, remain); + ERROR("Short read! (%d/%u)\n", i, remain); return CUPS_BACKEND_CANCEL; } ctx->datalen += i; @@ -895,7 +897,7 @@ static const char *magicard_prefixes[] = { struct dyesub_backend magicard_backend = { .name = "Magicard family", - .version = "0.10", + .version = "0.11", .uri_prefixes = magicard_prefixes, .cmdline_arg = magicard_cmdline_arg, .cmdline_usage = magicard_cmdline, diff --git a/backend_mitsu70x.c b/backend_mitsu70x.c index f6e5329..c989f54 100644 --- a/backend_mitsu70x.c +++ b/backend_mitsu70x.c @@ -1011,7 +1011,8 @@ repeat: remain = ctx->rows * ctx->cols * 3; DEBUG("Reading in %d bytes of 8bpp BGR data\n", remain); - spoolbuflen = 0; spoolbuf = malloc(remain); + spoolbuflen = 0; + spoolbuf = malloc(remain); if (!spoolbuf) { ERROR("Memory allocation failure!\n"); return CUPS_BACKEND_RETRY_CURRENT; @@ -1020,10 +1021,14 @@ repeat: /* Read in the BGR data */ while (remain) { i = read(data_fd, spoolbuf + spoolbuflen, remain); - if (i == 0) + if (i == 0) { + free(spoolbuf); return CUPS_BACKEND_CANCEL; - if (i < 0) + } + if (i < 0) { + free(spoolbuf); return CUPS_BACKEND_CANCEL; + } spoolbuflen += i; remain -= i; } @@ -1116,7 +1121,7 @@ repeat: if (ctx->matte) { int fd; uint32_t j; - DEBUG("Reading %d bytes of matte data from disk (%d/%d)\n", ctx->matte, ctx->cols, LAMINATE_STRIDE); + DEBUG("Reading %u bytes of matte data from disk (%d/%d)\n", ctx->matte, ctx->cols, LAMINATE_STRIDE); fd = open(ctx->laminatefname, O_RDONLY); if (fd < 0) { ERROR("Unable to open matte lamination data file '%s'\n", ctx->laminatefname); @@ -1450,7 +1455,7 @@ static int d70_library_callback(void *context, void *buffer, uint32_t len) if (chunk > CHUNK_LEN) chunk = CHUNK_LEN; - ret = send_data(ctx->dev, ctx->endp_down, buffer + offset, chunk); + ret = send_data(ctx->dev, ctx->endp_down, (uint8_t*)buffer + offset, chunk); if (ret < 0) break; @@ -1998,7 +2003,7 @@ static const char *mitsu70x_prefixes[] = { /* Exported */ struct dyesub_backend mitsu70x_backend = { .name = "Mitsubishi CP-D70 family", - .version = "0.76", + .version = "0.77", .uri_prefixes = mitsu70x_prefixes, .cmdline_usage = mitsu70x_cmdline, .cmdline_arg = mitsu70x_cmdline_arg, diff --git a/backend_shinkos1245.c b/backend_shinkos1245.c index 78b027a..d62ae38 100644 --- a/backend_shinkos1245.c +++ b/backend_shinkos1245.c @@ -1025,6 +1025,7 @@ static int get_tonecurve(struct shinkos1245_ctx *ctx, int type, int table, char if (ret < 0) goto done; ptr += num; + remaining -= num; } /* Issue a tone_end */ @@ -1148,6 +1149,7 @@ static int set_tonecurve(struct shinkos1245_ctx *ctx, int type, int table, char if (ret < 0) goto done; ptr += num; + remaining -= num; } /* Issue a tone_end */ @@ -1320,7 +1322,7 @@ static int shinkos1245_read_parse(void *vctx, int data_fd) { ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr)); if (ret < 0) return ret; - if (ret < 0 || ret != sizeof(ctx->hdr)) + if (ret != sizeof(ctx->hdr)) return CUPS_BACKEND_CANCEL; if (le32_to_cpu(ctx->hdr.len1) != 0x10 || @@ -1648,7 +1650,7 @@ static const char *shinkos1245_prefixes[] = { struct dyesub_backend shinkos1245_backend = { .name = "Shinko/Sinfonia CHC-S1245/E1", - .version = "0.19", + .version = "0.20", .uri_prefixes = shinkos1245_prefixes, .cmdline_usage = shinkos1245_cmdline, .cmdline_arg = shinkos1245_cmdline_arg,