Message ID | 20240106201010.29461-1-maks.mishinFZ@gmail.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Stephen Hemminger |
Headers | show |
Series | ifstat: Add NULL pointer check for result of ll_index_to_name() | expand |
Context | Check | Description |
---|---|---|
netdev/tree_selection | success | Not a local patch |
On Sat, 6 Jan 2024 23:10:10 +0300 Maks Mishin <maks.mishinfz@gmail.com> wrote: > Result of ll_index_to_name() function do not being checked for NULL > pointer before using in strdup() function. > Add intermediate variable `name` for result of ll_index_to_name() > function. Function result -1 when `name` is NULL. > > Signed-off-by: Maks Mishin <maks.mishinFZ@gmail.com> > --- > misc/ifstat.c | 7 ++++++- > 1 file changed, 6 insertions(+), 1 deletion(-) > > diff --git a/misc/ifstat.c b/misc/ifstat.c > index f6f9ba50..e6c38812 100644 > --- a/misc/ifstat.c > +++ b/misc/ifstat.c > @@ -129,7 +129,12 @@ static int get_nlmsg_extended(struct nlmsghdr *m, void *arg) > abort(); > > n->ifindex = ifsm->ifindex; > - n->name = strdup(ll_index_to_name(ifsm->ifindex)); > + > + const char* name = ll_index_to_name(ifsm->ifindex); > + if (name == NULL) { > + return -1; > + } > + n->name = strdup(name); > > if (sub_type == NO_SUB_TYPE) { > memcpy(&n->val, RTA_DATA(tb[filter_type]), sizeof(n->val)); iproute follows kernel coding style. checkpatch complains about this patch. Also, there are several more strdup() calls in ifstat. ### [PATCH] ifstat: Add NULL pointer check for result of ll_index_to_name() ERROR:TRAILING_WHITESPACE: trailing whitespace #105: FILE: misc/ifstat.c:132: +^I$ ERROR:POINTER_LOCATION: "foo* bar" should be "foo *bar" #106: FILE: misc/ifstat.c:133: + const char* name = ll_index_to_name(ifsm->ifindex); WARNING:BRACES: braces {} are not necessary for single statement blocks #107: FILE: misc/ifstat.c:134: + if (name == NULL) { + return -1; + } total: 2 errors, 1 warnings, 13 lines checked
diff --git a/misc/ifstat.c b/misc/ifstat.c index f6f9ba50..e6c38812 100644 --- a/misc/ifstat.c +++ b/misc/ifstat.c @@ -129,7 +129,12 @@ static int get_nlmsg_extended(struct nlmsghdr *m, void *arg) abort(); n->ifindex = ifsm->ifindex; - n->name = strdup(ll_index_to_name(ifsm->ifindex)); + + const char* name = ll_index_to_name(ifsm->ifindex); + if (name == NULL) { + return -1; + } + n->name = strdup(name); if (sub_type == NO_SUB_TYPE) { memcpy(&n->val, RTA_DATA(tb[filter_type]), sizeof(n->val));
Result of ll_index_to_name() function do not being checked for NULL pointer before using in strdup() function. Add intermediate variable `name` for result of ll_index_to_name() function. Function result -1 when `name` is NULL. Signed-off-by: Maks Mishin <maks.mishinFZ@gmail.com> --- misc/ifstat.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)