kopia lustrzana https://gitlab.com/sane-project/backends
Merge branch 'issue09-esci2-img-buffer-size-check' into '279-confidential-issue'
epsonds: Prevent possible buffer overflow when reading image data See merge request paddy-hack/backends!8merge-requests/463/merge
commit
f38c9f0d64
|
@ -880,6 +880,11 @@ esci2_img(struct epsonds_scanner *s, SANE_Int *length)
|
||||||
return parse_status;
|
return parse_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* more data than was accounted for in s->buf */
|
||||||
|
if (more > s->bsz) {
|
||||||
|
return SANE_STATUS_IO_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
/* ALWAYS read image data */
|
/* ALWAYS read image data */
|
||||||
if (s->hw->connection == SANE_EPSONDS_NET) {
|
if (s->hw->connection == SANE_EPSONDS_NET) {
|
||||||
epsonds_net_request_read(s, more);
|
epsonds_net_request_read(s, more);
|
||||||
|
|
|
@ -1230,16 +1230,18 @@ sane_start(SANE_Handle handle)
|
||||||
if (s->line_buffer == NULL)
|
if (s->line_buffer == NULL)
|
||||||
return SANE_STATUS_NO_MEM;
|
return SANE_STATUS_NO_MEM;
|
||||||
|
|
||||||
/* ring buffer for front page, twice bsz */
|
/* transfer buffer size, bsz */
|
||||||
/* XXX read value from scanner */
|
/* XXX read value from scanner */
|
||||||
status = eds_ring_init(&s->front, (65536 * 4) * 2);
|
s->bsz = (65536 * 4);
|
||||||
|
|
||||||
|
/* ring buffer for front page */
|
||||||
|
status = eds_ring_init(&s->front, s->bsz * 2);
|
||||||
if (status != SANE_STATUS_GOOD) {
|
if (status != SANE_STATUS_GOOD) {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* transfer buffer, bsz */
|
/* transfer buffer */
|
||||||
/* XXX read value from scanner */
|
s->buf = realloc(s->buf, s->bsz);
|
||||||
s->buf = realloc(s->buf, 65536 * 4);
|
|
||||||
if (s->buf == NULL)
|
if (s->buf == NULL)
|
||||||
return SANE_STATUS_NO_MEM;
|
return SANE_STATUS_NO_MEM;
|
||||||
|
|
||||||
|
|
|
@ -160,6 +160,7 @@ struct epsonds_scanner
|
||||||
Option_Value val[NUM_OPTIONS];
|
Option_Value val[NUM_OPTIONS];
|
||||||
SANE_Parameters params;
|
SANE_Parameters params;
|
||||||
|
|
||||||
|
size_t bsz; /* transfer buffer size */
|
||||||
SANE_Byte *buf, *line_buffer;
|
SANE_Byte *buf, *line_buffer;
|
||||||
ring_buffer *current, front, back;
|
ring_buffer *current, front, back;
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue