all: Handle short reads when loading in initial printjob header.
This commit is contained in:
parent
76c2e87fad
commit
817b6b04fc
|
@ -299,7 +299,13 @@ static int kodak1400_read_parse(void *vctx, int data_fd) {
|
|||
|
||||
|
||||
/* Read in then validate header */
|
||||
read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
|
||||
ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
|
||||
if (ret < 0 || ret != sizeof(ctx->hdr)) {
|
||||
ERROR("Read failed (%d/%d/%d)\n",
|
||||
ret, 0, (int)sizeof(ctx->hdr));
|
||||
perror("ERROR: Read failed");
|
||||
return ret;
|
||||
}
|
||||
if (ctx->hdr.hdr[0] != 'P' ||
|
||||
ctx->hdr.hdr[1] != 'G' ||
|
||||
ctx->hdr.hdr[2] != 'H' ||
|
||||
|
@ -554,7 +560,7 @@ top:
|
|||
|
||||
struct dyesub_backend kodak1400_backend = {
|
||||
.name = "Kodak 1400/805",
|
||||
.version = "0.25",
|
||||
.version = "0.26",
|
||||
.uri_prefix = "kodak1400",
|
||||
.cmdline_usage = kodak1400_cmdline,
|
||||
.cmdline_arg = kodak1400_cmdline_arg,
|
||||
|
|
|
@ -119,12 +119,20 @@ static void kodak605_teardown(void *vctx) {
|
|||
|
||||
static int kodak605_read_parse(void *vctx, int data_fd) {
|
||||
struct kodak605_ctx *ctx = vctx;
|
||||
int ret;
|
||||
|
||||
if (!ctx)
|
||||
return 1;
|
||||
|
||||
/* Read in then validate header */
|
||||
read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
|
||||
ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
|
||||
if (ret < 0 || ret != sizeof(ctx->hdr)) {
|
||||
ERROR("Read failed (%d/%d/%d)\n",
|
||||
ret, 0, (int)sizeof(ctx->hdr));
|
||||
perror("ERROR: Read failed");
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (ctx->hdr.hdr[0] != 0x01 ||
|
||||
ctx->hdr.hdr[1] != 0x40 ||
|
||||
ctx->hdr.hdr[2] != 0x0a ||
|
||||
|
@ -143,7 +151,6 @@ static int kodak605_read_parse(void *vctx, int data_fd) {
|
|||
{
|
||||
int remain = ctx->datalen;
|
||||
uint8_t *ptr = ctx->databuf;
|
||||
int ret;
|
||||
do {
|
||||
ret = read(data_fd, ptr, remain);
|
||||
if (ret < 0) {
|
||||
|
@ -481,7 +488,7 @@ static int kodak605_cmdline_arg(void *vctx, int run, char *arg1, char *arg2)
|
|||
/* Exported */
|
||||
struct dyesub_backend kodak605_backend = {
|
||||
.name = "Kodak 605",
|
||||
.version = "0.12",
|
||||
.version = "0.13",
|
||||
.uri_prefix = "kodak605",
|
||||
.cmdline_usage = kodak605_cmdline,
|
||||
.cmdline_arg = kodak605_cmdline_arg,
|
||||
|
|
|
@ -345,12 +345,19 @@ static void kodak6800_teardown(void *vctx) {
|
|||
|
||||
static int kodak6800_read_parse(void *vctx, int data_fd) {
|
||||
struct kodak6800_ctx *ctx = vctx;
|
||||
int ret;
|
||||
|
||||
if (!ctx)
|
||||
return 1;
|
||||
|
||||
/* Read in then validate header */
|
||||
read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
|
||||
ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
|
||||
if (ret < 0 || ret != sizeof(ctx->hdr)) {
|
||||
ERROR("Read failed (%d/%d/%d)\n",
|
||||
ret, 0, (int)sizeof(ctx->hdr));
|
||||
perror("ERROR: Read failed");
|
||||
return ret;
|
||||
}
|
||||
if (ctx->hdr.hdr[0] != 0x03 ||
|
||||
ctx->hdr.hdr[1] != 0x1b ||
|
||||
ctx->hdr.hdr[2] != 0x43 ||
|
||||
|
@ -370,7 +377,6 @@ static int kodak6800_read_parse(void *vctx, int data_fd) {
|
|||
{
|
||||
int remain = ctx->datalen;
|
||||
uint8_t *ptr = ctx->databuf;
|
||||
int ret;
|
||||
do {
|
||||
ret = read(data_fd, ptr, remain);
|
||||
if (ret < 0) {
|
||||
|
@ -595,7 +601,7 @@ skip_query:
|
|||
/* Exported */
|
||||
struct dyesub_backend kodak6800_backend = {
|
||||
.name = "Kodak 6800/6850",
|
||||
.version = "0.26",
|
||||
.version = "0.27",
|
||||
.uri_prefix = "kodak6800",
|
||||
.cmdline_usage = kodak6800_cmdline,
|
||||
.cmdline_arg = kodak6800_cmdline_arg,
|
||||
|
|
|
@ -112,7 +112,13 @@ static int mitsu70x_read_parse(void *vctx, int data_fd) {
|
|||
return 1;
|
||||
|
||||
/* Read in initial header to sanity check */
|
||||
read(data_fd, hdr, sizeof(hdr));
|
||||
i = read(data_fd, hdr, sizeof(hdr));
|
||||
if (i < 0 || i != sizeof(hdr)) {
|
||||
ERROR("Read failed (%d/%d/%d)\n",
|
||||
i, 0, (int)sizeof(hdr));
|
||||
perror("ERROR: Read failed");
|
||||
return i;
|
||||
}
|
||||
if (hdr[0] != 0x1b ||
|
||||
hdr[1] != 0x45 ||
|
||||
hdr[2] != 0x57 ||
|
||||
|
@ -346,7 +352,7 @@ static int mitsu70x_cmdline_arg(void *vctx, int run, char *arg1, char *arg2)
|
|||
/* Exported */
|
||||
struct dyesub_backend mitsu70x_backend = {
|
||||
.name = "Mitsubishi CP-D70/D707",
|
||||
.version = "0.07",
|
||||
.version = "0.08",
|
||||
.uri_prefix = "mitsu70x",
|
||||
.cmdline_usage = mitsu70x_cmdline,
|
||||
.cmdline_arg = mitsu70x_cmdline_arg,
|
||||
|
|
|
@ -1412,7 +1412,14 @@ static int shinkos2145_read_parse(void *vctx, int data_fd) {
|
|||
ctx->fast_return = 1;
|
||||
|
||||
/* Read in then validate header */
|
||||
read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
|
||||
ret = read(data_fd, &ctx->hdr, sizeof(ctx->hdr));
|
||||
if (ret < 0 || ret != sizeof(ctx->hdr)) {
|
||||
ERROR("Read failed (%d/%d/%d)\n",
|
||||
ret, 0, (int)sizeof(ctx->hdr));
|
||||
perror("ERROR: Read failed");
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (le32_to_cpu(ctx->hdr.len1) != 0x10 ||
|
||||
le32_to_cpu(ctx->hdr.model) != 2145 ||
|
||||
le32_to_cpu(ctx->hdr.len2) != 0x64 ||
|
||||
|
@ -1651,7 +1658,7 @@ static int shinkos2145_query_serno(struct libusb_device_handle *dev, uint8_t end
|
|||
|
||||
struct dyesub_backend shinkos2145_backend = {
|
||||
.name = "Shinko/Sinfonia CHC-S2145 (S2)",
|
||||
.version = "0.25",
|
||||
.version = "0.26",
|
||||
.uri_prefix = "shinkos2145",
|
||||
.cmdline_usage = shinkos2145_cmdline,
|
||||
.cmdline_arg = shinkos2145_cmdline_arg,
|
||||
|
|
Loading…
Reference in New Issue