If we hit the missing identifier case, then we reached the end of the
token list. So, we should break out of the loop, and not continue.
Otherwise we will go past the end of the array as this minimal testcase
shows:
$timescale 1 ns $end
$var wire 1 n0 addr_0 $end
$enddefinitions $end
1
gives:
$ ./sigrok-cli -I vcd -i no_mod.vcd -O vcd -o /tmp/o.vcd
Segmentation fault
Signed-off-by: Wolfram Sang <redacted>
* there was whitespace after the bit, the next token.
*/
if (tokens[i][1] == '\0') {
- if (!tokens[++i])
- /* Missing identifier */
- continue;
+ if (!tokens[++i]) {
+ sr_dbg("Identifier missing!");
+ break;
+ }
} else {
for (j = 1; tokens[i][j]; j++)
tokens[i][j - 1] = tokens[i][j];