Message ID | 20181201210657.5350-1-danieltimlee@gmail.com |
---|---|
State | Changes Requested, archived |
Delegated to: | BPF Maintainers |
Headers | show |
Series | samples: bpf: fix: seg fault with NULL pointer arg | expand |
On Sat, Dec 1, 2018 at 1:07 PM Daniel T. Lee <danieltimlee@gmail.com> wrote: > > When NULL pointer accidentally passed to write_kprobe_events, > due to strlen(NULL), segmentation fault happens. > Changed code returns -1 to deal with this situation. > > Bug issued with Smatch, static analysis. > > Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com> > --- > samples/bpf/bpf_load.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > > diff --git a/samples/bpf/bpf_load.c b/samples/bpf/bpf_load.c > index 434ea34a5954..c670bd2200d2 100644 > --- a/samples/bpf/bpf_load.c > +++ b/samples/bpf/bpf_load.c > @@ -58,7 +58,9 @@ static int write_kprobe_events(const char *val) > { > int fd, ret, flags; > > - if ((val != NULL) && (val[0] == '\0')) > + if (val == NULL) > + return -1; > + else if ((val != NULL) && (val[0] == '\0')) We only need + else if (val[0] == '\0') right? Thanks, Song
diff --git a/samples/bpf/bpf_load.c b/samples/bpf/bpf_load.c index 434ea34a5954..c670bd2200d2 100644 --- a/samples/bpf/bpf_load.c +++ b/samples/bpf/bpf_load.c @@ -58,7 +58,9 @@ static int write_kprobe_events(const char *val) { int fd, ret, flags; - if ((val != NULL) && (val[0] == '\0')) + if (val == NULL) + return -1; + else if ((val != NULL) && (val[0] == '\0')) flags = O_WRONLY | O_TRUNC; else flags = O_WRONLY | O_APPEND;
When NULL pointer accidentally passed to write_kprobe_events, due to strlen(NULL), segmentation fault happens. Changed code returns -1 to deal with this situation. Bug issued with Smatch, static analysis. Signed-off-by: Daniel T. Lee <danieltimlee@gmail.com> --- samples/bpf/bpf_load.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)