----- 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].
> 
> 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

Reply via email to