]> sigrok.org Git - libsigrok.git/commitdiff
Fix read past end of array in sr_analog_si_prefix_friendly.
authorMartin Ling <redacted>
Thu, 20 Sep 2018 00:45:22 +0000 (01:45 +0100)
committerUwe Hermann <redacted>
Thu, 20 Sep 2018 18:35:42 +0000 (20:35 +0200)
In the case where the input unit was not in the array, the for loop would
complete, but the following test would then read past the end of the array
since 'i' would already have been incremented to the array size.

Spotted because unitless data was getting SI prefixes with no unit, though
this would not have been deterministically reproducible.

This fixes parts of bug #950.

src/analog.c

index 6511de5155728d97d5843a9ae7a92ef57150e106..4eda290f1197f162f03e3e54b64330f1f1f3a5d0 100644 (file)
@@ -365,12 +365,9 @@ SR_API gboolean sr_analog_si_prefix_friendly(enum sr_unit unit)
 
        for (i = 0; i < ARRAY_SIZE(prefix_friendly_units); i++)
                if (unit == prefix_friendly_units[i])
-                       break;
-
-       if (unit != prefix_friendly_units[i])
-               return FALSE;
+                       return TRUE;
 
-       return TRUE;
+       return FALSE;
 }
 
 /**