app/test: fix buffer overflow
authorJan Viktorin <viktorin@rehivetech.com>
Tue, 3 May 2016 19:15:27 +0000 (21:15 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 25 May 2016 08:34:58 +0000 (10:34 +0200)
commitc8c33ad7f94c59d1c0676af0cfd61207b3e808db
tree55079ccec0ed78bef2f3c2ef64171355c6b9913a
parentd198f18b144cf2689a4e97376e0c4a9e05ba87ca
app/test: fix buffer overflow

A bug has been detected by valgrind:

Invalid write of size 1
   by 0x86ECC76: sprintf (in /usr/lib/libc-2.23.so)
   by 0x430B0A: commands_init (in build/app/test)
   by 0x42F215: main (in build/app/test)
 Address 0x9d72ff2 is 0 bytes after a block of size 1,346 alloc'd
   at 0x78C1BD0: malloc (in vgpreload_memcheck-amd64-linux.so)
   by 0x430AE4: commands_init (in build/app/test)
   by 0x42F215: main (in build/app/test)

The commands buffer is exactly 1346 B long so there is an access just
after the buffer. The sprintf always writes '\0' at the end of the string.
The '#' separator adds 1 B more to each string. This is correct until the
last string is sprinted there. The last one is 1 B longer then expected,
i.e.:
      strlen(t->command) + strlen("#") + ONE_FOR_ZERO

Fixes: 727909c59231 ("app/test: introduce dynamic commands list")

Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: David Marchand <david.marchand@6wind.com>
app/test/commands.c