dnp: Fix segfault. Bad Solomon.
This commit is contained in:
parent
26acaaf8df
commit
2bb1faefb5
|
@ -809,6 +809,33 @@ static int dnpds40_attach(void *vctx, struct libusb_device_handle *dev, int type
|
||||||
/* All current models support 600dpi */
|
/* All current models support 600dpi */
|
||||||
ctx->supports_600dpi = 1;
|
ctx->supports_600dpi = 1;
|
||||||
|
|
||||||
|
if (test_mode < TEST_MODE_NOATTACH) {
|
||||||
|
struct dnpds40_cmd cmd;
|
||||||
|
uint8_t *resp;
|
||||||
|
int len = 0;
|
||||||
|
|
||||||
|
/* Get Firmware Version */
|
||||||
|
dnpds40_build_cmd(&cmd, "INFO", "FVER", 0);
|
||||||
|
|
||||||
|
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
|
||||||
|
if (resp) {
|
||||||
|
char *ptr;
|
||||||
|
dnpds40_cleanup_string((char*)resp, len);
|
||||||
|
ctx->version = strdup((char*) resp);
|
||||||
|
|
||||||
|
/* Parse version */
|
||||||
|
/* ptr = */ strtok((char*)resp, " .");
|
||||||
|
ptr = strtok(NULL, ".");
|
||||||
|
ctx->ver_major = atoi(ptr);
|
||||||
|
ptr = strtok(NULL, ".");
|
||||||
|
ctx->ver_minor = atoi(ptr);
|
||||||
|
|
||||||
|
free(resp);
|
||||||
|
} else {
|
||||||
|
return CUPS_BACKEND_FAILED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Per-printer options */
|
/* Per-printer options */
|
||||||
switch (ctx->type) {
|
switch (ctx->type) {
|
||||||
case P_DNP_DS40:
|
case P_DNP_DS40:
|
||||||
|
@ -937,26 +964,6 @@ static int dnpds40_attach(void *vctx, struct libusb_device_handle *dev, int type
|
||||||
uint8_t *resp;
|
uint8_t *resp;
|
||||||
int len = 0;
|
int len = 0;
|
||||||
|
|
||||||
/* Get Firmware Version */
|
|
||||||
dnpds40_build_cmd(&cmd, "INFO", "FVER", 0);
|
|
||||||
|
|
||||||
resp = dnpds40_resp_cmd(ctx, &cmd, &len);
|
|
||||||
if (resp) {
|
|
||||||
char *ptr;
|
|
||||||
dnpds40_cleanup_string((char*)resp, len);
|
|
||||||
ctx->version = strdup((char*) resp);
|
|
||||||
|
|
||||||
/* Parse version */
|
|
||||||
/* ptr = */ strtok((char*)resp, " .");
|
|
||||||
ptr = strtok(NULL, ".");
|
|
||||||
ctx->ver_major = atoi(ptr);
|
|
||||||
ptr = strtok(NULL, ".");
|
|
||||||
ctx->ver_minor = atoi(ptr);
|
|
||||||
free(resp);
|
|
||||||
} else {
|
|
||||||
return CUPS_BACKEND_FAILED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Get Serial Number */
|
/* Get Serial Number */
|
||||||
dnpds40_build_cmd(&cmd, "INFO", "SERIAL_NUMBER", 0);
|
dnpds40_build_cmd(&cmd, "INFO", "SERIAL_NUMBER", 0);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue