aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Hemminger <stephen@networkplumber.org>2023-05-08 20:15:52 -0700
committerStephen Hemminger <stephen@networkplumber.org>2023-05-13 19:02:41 -0700
commit33722349feb9ac8ea77cf658f79940a42261f44d (patch)
tree76255b1b81c3e12b04bedd7798a287c9c4ab1ff3
parentd348d1d6466a4a712b47612c1e9388161334fc7a (diff)
downloadiproute2-33722349feb9ac8ea77cf658f79940a42261f44d.tar.gz
rdma/utils: fix some analyzer warnings
Add error checks for cases where analyzer thinks it is possible to us a possibly NULL value. utils.c: In function ‘get_port_from_argv’: utils.c:76:17: warning: use of NULL where non-null expected [CWE-476] [-Wanalyzer-null-argument] 76 | slash = strchr(rd_argv(rd), '/'); | ^~~~~~~~~~~~~~~~~~~~~~~~ ‘get_port_from_argv’: events 1-2 | | 68 | static int get_port_from_argv(struct rd *rd, uint32_t *port, | | ^~~~~~~~~~~~~~~~~~ | | | | | (1) entry to ‘get_port_from_argv’ |...... | 76 | slash = strchr(rd_argv(rd), '/'); | | ~ | | | | | (2) inlined call to ‘rd_argv’ from ‘get_port_from_argv’ | +--> ‘rd_argv’: event 3 | | 18 | if (!rd_argc(rd)) | | ^ | | | | | (3) following ‘true’ branch... | <------+ | ‘get_port_from_argv’: events 4-5 | | 76 | slash = strchr(rd_argv(rd), '/'); | | ^~~~~~~~~~~~~~~~~~~~~~~~ | | | | | (4) ...to here | | (5) argument 1 (‘<unknown>’) NULL where non-null expected | In file included from rdma.h:10, from utils.c:7: /usr/include/string.h:246:14: note: argument 1 of ‘strchr’ must be non-null 246 | extern char *strchr (const char *__s, int __c) | ^~~~~~ Fixes: 40df8263a0f0 ("rdma: Add dev object") Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
-rw-r--r--rdma/utils.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/rdma/utils.c b/rdma/utils.c
index 21177b565..a33ff420f 100644
--- a/rdma/utils.c
+++ b/rdma/utils.c
@@ -75,6 +75,13 @@ static int get_port_from_argv(struct rd *rd, uint32_t *port,
slash = strchr(rd_argv(rd), '/');
/* if no port found, return 0 */
+ if (slash == NULL) {
+ if (strict_port)
+ return -EINVAL;
+ else
+ return 0;
+ }
+
if (slash++) {
if (*slash == '-') {
if (strict_port)
@@ -747,6 +754,9 @@ struct dev_map *dev_map_lookup(struct rd *rd, bool allow_port_index)
return NULL;
dev_name = strdup(rd_argv(rd));
+ if (!dev_name)
+ return NULL;
+
if (allow_port_index) {
slash = strrchr(dev_name, '/');
if (slash)