diff mbox series

libselinux:add check for malloc

Message ID 20221129120020.1915666-1-lujie54@huawei.com (mailing list archive)
State Accepted
Commit 4c47f92758df
Headers show
Series libselinux:add check for malloc | expand

Commit Message

Jie Lu Nov. 29, 2022, noon UTC
Add return check for regex_data_create() to avoid NULL reference of regex_data

(gdb) bt
 #0  0x00007fbde5caec14 in pthread_mutex_init () from /usr/lib64/libc.so.6
 #1  0x00007fbde5e3a489 in regex_data_create () at regex.c:260
 #2  0x00007fbde5e3a4af in regex_prepare_data (regex=regex@entry=0x7fbde4613770, pattern_string=pattern_string@entry=0x563c6799a820 "^/home$", errordata=errordata@entry=0x7ffeb83fa950) at regex.c:76
 #3  0x00007fbde5e32fe6 in compile_regex (errbuf=0x0, spec=0x7fbde4613748) at label_file.h:407
 #4  lookup_all (key=0x563c679974e5 "/var/log/kadmind.log", type=<optimized out>, partial=partial@entry=false, match_count=match_count@entry=0x0, rec=<optimized out>, rec=<optimized out>)
     at label_file.c:949
 #5  0x00007fbde5e33350 in lookup (rec=<optimized out>, key=<optimized out>, type=<optimized out>) at label_file.c:1092
 #6  0x00007fbde5e31878 in selabel_lookup_common (rec=0x563c67998cc0, translating=1, key=<optimized out>, type=<optimized out>) at label.c:167

Signed-off-by: Jie Lu <lujie54@huawei.com>
---
 libselinux/src/regex.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

James Carter Dec. 16, 2022, 2:15 p.m. UTC | #1
On Tue, Nov 29, 2022 at 9:45 AM Jie Lu <lujie54@huawei.com> wrote:
>
> Add return check for regex_data_create() to avoid NULL reference of regex_data
>
> (gdb) bt
>  #0  0x00007fbde5caec14 in pthread_mutex_init () from /usr/lib64/libc.so.6
>  #1  0x00007fbde5e3a489 in regex_data_create () at regex.c:260
>  #2  0x00007fbde5e3a4af in regex_prepare_data (regex=regex@entry=0x7fbde4613770, pattern_string=pattern_string@entry=0x563c6799a820 "^/home$", errordata=errordata@entry=0x7ffeb83fa950) at regex.c:76
>  #3  0x00007fbde5e32fe6 in compile_regex (errbuf=0x0, spec=0x7fbde4613748) at label_file.h:407
>  #4  lookup_all (key=0x563c679974e5 "/var/log/kadmind.log", type=<optimized out>, partial=partial@entry=false, match_count=match_count@entry=0x0, rec=<optimized out>, rec=<optimized out>)
>      at label_file.c:949
>  #5  0x00007fbde5e33350 in lookup (rec=<optimized out>, key=<optimized out>, type=<optimized out>) at label_file.c:1092
>  #6  0x00007fbde5e31878 in selabel_lookup_common (rec=0x563c67998cc0, translating=1, key=<optimized out>, type=<optimized out>) at label.c:167
>
> Signed-off-by: Jie Lu <lujie54@huawei.com>

Acked-by: James Carter <jwcart2@gmail.com>

> ---
>  libselinux/src/regex.c | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/libselinux/src/regex.c b/libselinux/src/regex.c
> index 73987d9f..149a7973 100644
> --- a/libselinux/src/regex.c
> +++ b/libselinux/src/regex.c
> @@ -257,6 +257,9 @@ struct regex_data *regex_data_create(void)
>  {
>         struct regex_data *regex_data =
>                 (struct regex_data *)calloc(1, sizeof(struct regex_data));
> +       if (!regex_data)
> +               return NULL;
> +
>         __pthread_mutex_init(&regex_data->match_mutex, NULL);
>         return regex_data;
>  }
> --
> 2.27.0
>
James Carter Dec. 16, 2022, 10:01 p.m. UTC | #2
On Fri, Dec 16, 2022 at 9:15 AM James Carter <jwcart2@gmail.com> wrote:
>
> On Tue, Nov 29, 2022 at 9:45 AM Jie Lu <lujie54@huawei.com> wrote:
> >
> > Add return check for regex_data_create() to avoid NULL reference of regex_data
> >
> > (gdb) bt
> >  #0  0x00007fbde5caec14 in pthread_mutex_init () from /usr/lib64/libc.so.6
> >  #1  0x00007fbde5e3a489 in regex_data_create () at regex.c:260
> >  #2  0x00007fbde5e3a4af in regex_prepare_data (regex=regex@entry=0x7fbde4613770, pattern_string=pattern_string@entry=0x563c6799a820 "^/home$", errordata=errordata@entry=0x7ffeb83fa950) at regex.c:76
> >  #3  0x00007fbde5e32fe6 in compile_regex (errbuf=0x0, spec=0x7fbde4613748) at label_file.h:407
> >  #4  lookup_all (key=0x563c679974e5 "/var/log/kadmind.log", type=<optimized out>, partial=partial@entry=false, match_count=match_count@entry=0x0, rec=<optimized out>, rec=<optimized out>)
> >      at label_file.c:949
> >  #5  0x00007fbde5e33350 in lookup (rec=<optimized out>, key=<optimized out>, type=<optimized out>) at label_file.c:1092
> >  #6  0x00007fbde5e31878 in selabel_lookup_common (rec=0x563c67998cc0, translating=1, key=<optimized out>, type=<optimized out>) at label.c:167
> >
> > Signed-off-by: Jie Lu <lujie54@huawei.com>
>
> Acked-by: James Carter <jwcart2@gmail.com>
>

Merged.
Thanks,
Jim

> > ---
> >  libselinux/src/regex.c | 3 +++
> >  1 file changed, 3 insertions(+)
> >
> > diff --git a/libselinux/src/regex.c b/libselinux/src/regex.c
> > index 73987d9f..149a7973 100644
> > --- a/libselinux/src/regex.c
> > +++ b/libselinux/src/regex.c
> > @@ -257,6 +257,9 @@ struct regex_data *regex_data_create(void)
> >  {
> >         struct regex_data *regex_data =
> >                 (struct regex_data *)calloc(1, sizeof(struct regex_data));
> > +       if (!regex_data)
> > +               return NULL;
> > +
> >         __pthread_mutex_init(&regex_data->match_mutex, NULL);
> >         return regex_data;
> >  }
> > --
> > 2.27.0
> >
diff mbox series

Patch

diff --git a/libselinux/src/regex.c b/libselinux/src/regex.c
index 73987d9f..149a7973 100644
--- a/libselinux/src/regex.c
+++ b/libselinux/src/regex.c
@@ -257,6 +257,9 @@  struct regex_data *regex_data_create(void)
 {
 	struct regex_data *regex_data =
 		(struct regex_data *)calloc(1, sizeof(struct regex_data));
+	if (!regex_data)
+		return NULL;
+
 	__pthread_mutex_init(&regex_data->match_mutex, NULL);
 	return regex_data;
 }