* [dpdk-dev] [PATCH] app/test: fix +/-1 error in allocation
@ 2016-05-03 19:15 Jan Viktorin
2016-05-04 8:15 ` David Marchand
0 siblings, 1 reply; 3+ messages in thread
From: Jan Viktorin @ 2016-05-03 19:15 UTC (permalink / raw)
To: dev; +Cc: Jan Viktorin, David Marchand, Thomas Monjalon
A bug has been detected by valgrind:
==14406== Invalid write of size 1
==14406== by 0x86ECC76: sprintf (in /usr/lib/libc-2.23.so)
==14406== by 0x430B0A: commands_init (in /home/jviki/Projects/dpdk/dpdk-soc/build/app/test)
==14406== by 0x42F215: main (in /home/jviki/Projects/dpdk/dpdk-soc/build/app/test)
==14406== Address 0x9d72ff2 is 0 bytes after a block of size 1,346 alloc'd
==14406== at 0x78C1BD0: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==14406== by 0x430AE4: commands_init (in /home/jviki/Projects/dpdk/dpdk-soc/build/app/test)
==14406== by 0x42F215: main (in /home/jviki/Projects/dpdk/dpdk-soc/build/app/test)
==14406==
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>
---
app/test/commands.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/app/test/commands.c b/app/test/commands.c
index 9cb9606..e0af8e4 100644
--- a/app/test/commands.c
+++ b/app/test/commands.c
@@ -439,7 +439,7 @@ int commands_init(void)
commands_len += strlen(t->command) + 1;
}
- commands = malloc(commands_len);
+ commands = malloc(commands_len + 1);
if (!commands)
return -1;
--
2.8.0
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [dpdk-dev] [PATCH] app/test: fix +/-1 error in allocation
2016-05-03 19:15 [dpdk-dev] [PATCH] app/test: fix +/-1 error in allocation Jan Viktorin
@ 2016-05-04 8:15 ` David Marchand
2016-05-25 8:35 ` Thomas Monjalon
0 siblings, 1 reply; 3+ messages in thread
From: David Marchand @ 2016-05-04 8:15 UTC (permalink / raw)
To: Jan Viktorin; +Cc: dev, Thomas Monjalon
On Tue, May 3, 2016 at 9:15 PM, Jan Viktorin <viktorin@rehivetech.com> wrote:
> A bug has been detected by valgrind:
>
> ==14406== Invalid write of size 1
> ==14406== by 0x86ECC76: sprintf (in /usr/lib/libc-2.23.so)
> ==14406== by 0x430B0A: commands_init (in /home/jviki/Projects/dpdk/dpdk-soc/build/app/test)
> ==14406== by 0x42F215: main (in /home/jviki/Projects/dpdk/dpdk-soc/build/app/test)
> ==14406== Address 0x9d72ff2 is 0 bytes after a block of size 1,346 alloc'd
> ==14406== at 0x78C1BD0: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==14406== by 0x430AE4: commands_init (in /home/jviki/Projects/dpdk/dpdk-soc/build/app/test)
> ==14406== by 0x42F215: main (in /home/jviki/Projects/dpdk/dpdk-soc/build/app/test)
> ==14406==
>
> 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>
Good catch.
Acked-by: David Marchand <david.marchand@6wind.com>
--
David Marchand
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [dpdk-dev] [PATCH] app/test: fix +/-1 error in allocation
2016-05-04 8:15 ` David Marchand
@ 2016-05-25 8:35 ` Thomas Monjalon
0 siblings, 0 replies; 3+ messages in thread
From: Thomas Monjalon @ 2016-05-25 8:35 UTC (permalink / raw)
To: Jan Viktorin; +Cc: David Marchand, dev
2016-05-04 10:15, David Marchand:
> On Tue, May 3, 2016 at 9:15 PM, Jan Viktorin <viktorin@rehivetech.com> wrote:
> > A bug has been detected by valgrind:
[...]
> > strlen(t->command) + strlen("#") + ONE_FOR_ZERO
> >
> > Fixes: 727909c59231 ("app/test: introduce dynamic commands list")
> >
> > Signed-off-by: Jan Viktorin <viktorin@rehivetech.com>
>
> Good catch.
> Acked-by: David Marchand <david.marchand@6wind.com>
Applied, thanks
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2016-05-25 8:35 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-05-03 19:15 [dpdk-dev] [PATCH] app/test: fix +/-1 error in allocation Jan Viktorin
2016-05-04 8:15 ` David Marchand
2016-05-25 8:35 ` Thomas Monjalon
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).