diff options
author | Pali Rohár <pali.rohar@gmail.com> | 2021-05-02 18:44:22 +0200 |
---|---|---|
committer | Pali Rohár <pali.rohar@gmail.com> | 2021-05-02 18:44:22 +0200 |
commit | 8a9e2759d4c68006c5c42619f21ab80154cf06cd (patch) | |
tree | f03727a215b77182edb3b86322dc31f8ff6e6c98 | |
parent | bacbb0165bc4c3de5eb26e8ac67e86073c665875 (diff) | |
download | 0xFFFF-8a9e2759d4c68006c5c42619f21ab80154cf06cd.tar.bz2 |
device: Fix 0xFFFF crash when generating fiasco image without hwrev
-rw-r--r-- | src/device.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/device.c b/src/device.c index db2c6a7..0a7820a 100644 --- a/src/device.c +++ b/src/device.c @@ -184,9 +184,11 @@ char ** device_list_alloc_to_bufs(const struct device_list * device_list) { continue; } - for ( i = 0; device_first->hwrevs[i] != -1; ++i ) - if ( device_first->hwrevs[i] >= 0 && device_first->hwrevs[i] <= 9999 ) - ++local; + if ( device_first->hwrevs ) { + for ( i = 0; device_first->hwrevs[i] != -1; ++i ) + if ( device_first->hwrevs[i] >= 0 && device_first->hwrevs[i] <= 9999 ) + ++local; + } size += (1+16+(MAX_HWREVS+1)*8)*(local/MAX_HWREVS+1); count += local/MAX_HWREVS; @@ -215,7 +217,7 @@ char ** device_list_alloc_to_bufs(const struct device_list * device_list) { continue; } - while ( device_first->hwrevs[i+1] != -1 ) { + do { uint8_t len = 0; ret[j] = ++last_ptr; @@ -228,7 +230,7 @@ char ** device_list_alloc_to_bufs(const struct device_list * device_list) { for ( k = 0; k < MAX_HWREVS; ++k ) { - if ( device_first->hwrevs[i+1] == -1 ) + if ( ! device_first->hwrevs || device_first->hwrevs[i+1] == -1 ) break; ++i; @@ -246,7 +248,7 @@ char ** device_list_alloc_to_bufs(const struct device_list * device_list) { ++j; - } + } while ( device_first->hwrevs && device_first->hwrevs[i+1] != -1 ); device_first = device_first->next; |