forked from M-Labs/artiq
flash_storage: avoid crash if a record size gets corrupted to be less than 6
This commit is contained in:
parent
4bf7875b87
commit
c32133b815
|
@ -61,6 +61,13 @@ static int record_iter_next(struct iter_state *is, struct record *record, int *f
|
||||||
if(record->size == END_MARKER)
|
if(record->size == END_MARKER)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
|
if(record->size < 6) {
|
||||||
|
printf("flash_storage might be corrupted: record size is %u (<6) at address %08x\n", record->size, record->raw_record);
|
||||||
|
if(fatal)
|
||||||
|
*fatal = 1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
if(is->seek > is->buf_len - sizeof(record->size) - 2) { /* 2 is the minimum key length */
|
if(is->seek > is->buf_len - sizeof(record->size) - 2) { /* 2 is the minimum key length */
|
||||||
printf("flash_storage might be corrupted: END_MARKER missing at the end of the storage sector\n");
|
printf("flash_storage might be corrupted: END_MARKER missing at the end of the storage sector\n");
|
||||||
if(fatal)
|
if(fatal)
|
||||||
|
|
Loading…
Reference in New Issue