mitsud90: Further cutlist sanity checks.

This commit is contained in:
Solomon Peachy 2020-03-06 00:00:26 -05:00
parent 76c5efd5b7
commit 80b5126a89
1 changed files with 16 additions and 11 deletions

View File

@ -759,19 +759,24 @@ static int mitsud90_read_parse(void *vctx, const void **vjob, int data_fd, int c
return CUPS_BACKEND_CANCEL;
}
if (job->hdr.numcuts >= 1) {
if (be16_to_cpu(job->hdr.cutlist[0].position) < 613) {
ERROR("Minumum cut1 length is 613 rows\n");
mitsud90_cleanup_job(job);
return CUPS_BACKEND_CANCEL;
}
for (i = 1 ; i < job->hdr.numcuts ; i++) {
int rows = be16_to_cpu(job->hdr.rows);
for (i = 0 ; i < job->hdr.numcuts ; i++) {
int min_size;
if (job->hdr.cutlist[i-1].margincut)
min_size = 606; // XXX inverted?
int position = be16_to_cpu(job->hdr.cutlist[i].position);
int last_position = (i == 0) ? 0 : be16_to_cpu(job->hdr.cutlist[i-1].position);
if (i == 0)
min_size = 613;
else
min_size = 660;
if (be16_to_cpu(job->hdr.cutlist[i].position) - be16_to_cpu(job->hdr.cutlist[i-1].position) < min_size) {
ERROR("Minumum cutN length is %d rows!\n", min_size);
min_size = (job->hdr.cutlist[i-1].margincut) ? 601 : 660; // XXX inverted?
if ((position - last_position) < min_size) {
ERROR("Minumum cut#%d length is %d rows\n", i, min_size);
mitsud90_cleanup_job(job);
return CUPS_BACKEND_CANCEL;
}
if ((rows - position) < min_size) {
ERROR("Cut#%d is too close to end\n", i);
mitsud90_cleanup_job(job);
return CUPS_BACKEND_CANCEL;
}