----- On Mar 13, 2017, at 9:12 PM, Mathieu Desnoyers [email protected] wrote:
> ----- On Mar 13, 2017, at 6:11 PM, Jonathan Rajotte > [email protected] wrote: > >> fscanf on an empty file returns directly without assigning value to >> 'index' leading to assigning the value of an uninitialized variable to >> syscall_table_nb_entry. This can result in memory allocation problems >> when listing syscalls on 'lttng list --kernel --syscall'[1][2]. Actually, you should also state in this changelog that it fixes a second issue: we lose the last element due to off-by-one on index. Thanks, Mathieu >> >> Fixes #1091 >> >> [1] https://bugs.lttng.org/issues/1091 >> [2] https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1671063/ >> >> Signed-off-by: Jonathan Rajotte <[email protected]> >> --- >> src/bin/lttng-sessiond/syscall.c | 13 ++++++++++--- >> 1 file changed, 10 insertions(+), 3 deletions(-) >> >> diff --git a/src/bin/lttng-sessiond/syscall.c >> b/src/bin/lttng-sessiond/syscall.c >> index 6ee38bd..c21e4d8 100644 >> --- a/src/bin/lttng-sessiond/syscall.c >> +++ b/src/bin/lttng-sessiond/syscall.c >> @@ -16,6 +16,8 @@ >> */ >> >> #define _LGPL_SOURCE >> +#include <stdbool.h> >> + >> #include <common/bitfield.h> >> #include <common/common.h> >> #include <common/kernel-ctl/kernel-ctl.h> >> @@ -43,7 +45,8 @@ int syscall_init_table(void) >> size_t nbmem; >> FILE *fp; >> /* Syscall data from the kernel. */ >> - size_t index; >> + size_t index = 0; >> + bool at_least_one_syscall = false; >> uint32_t bitness; >> char name[SYSCALL_NAME_LEN]; >> >> @@ -76,7 +79,8 @@ int syscall_init_table(void) >> name = %" XSTR(SYSCALL_NAME_LEN) "[^;]; \ >> bitness = %u; };\n", >> &index, name, &bitness) == 3) { >> - if (index >= nbmem ) { >> + at_least_one_syscall = true; >> + if (index >= nbmem) { >> struct syscall *new_list; >> size_t new_nbmem; >> >> @@ -123,7 +127,10 @@ int syscall_init_table(void) >> */ >> } >> >> - syscall_table_nb_entry = index; >> + /* Index start at 0. */ > > start -> starts > > other than that: > > Acked-by: Mathieu Desnoyers <[email protected]> > >> + if (at_least_one_syscall) { >> + syscall_table_nb_entry = index + 1; >> + } >> >> ret = 0; >> >> -- >> 2.7.4 >> >> _______________________________________________ >> lttng-dev mailing list >> [email protected] >> https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev > > -- > Mathieu Desnoyers > EfficiOS Inc. > http://www.efficios.com > _______________________________________________ > lttng-dev mailing list > [email protected] > https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev -- Mathieu Desnoyers EfficiOS Inc. http://www.efficios.com _______________________________________________ lttng-dev mailing list [email protected] https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
