summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPali Rohár <pali.rohar@gmail.com>2021-05-02 18:44:22 +0200
committerPali Rohár <pali.rohar@gmail.com>2021-05-02 18:44:22 +0200
commit8a9e2759d4c68006c5c42619f21ab80154cf06cd (patch)
treef03727a215b77182edb3b86322dc31f8ff6e6c98
parentbacbb0165bc4c3de5eb26e8ac67e86073c665875 (diff)
download0xFFFF-8a9e2759d4c68006c5c42619f21ab80154cf06cd.tar.bz2
device: Fix 0xFFFF crash when generating fiasco image without hwrev
-rw-r--r--src/device.c14
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;