]> git.proxmox.com Git - mirror_frr.git/commitdiff
zebra: add error check condition to sock option
authorChirag Shah <chirag@nvidia.com>
Tue, 31 May 2022 03:51:17 +0000 (20:51 -0700)
committerChirag Shah <chirag@nvidia.com>
Tue, 31 May 2022 20:50:48 +0000 (13:50 -0700)
Adding error checking condition which was missed
in PR-11216.

*** CID 1517953:  Error handling issues  (CHECKED_RETURN)
/zebra/kernel_netlink.c: 313 in netlink_socket()
307                     memset(&snl, 0, sizeof(snl));
308                     snl.nl_family = AF_NETLINK;
309                     snl.nl_groups = groups;
310
311     #if defined SOL_NETLINK
312                     if (ext_groups)
>>>     CID 1517953:  Error handling issues  (CHECKED_RETURN)
>>>     Calling "setsockopt(sock, 270, 1, &ext_groups, 8U)" without checking return value. This library function may fail and return an error code.
313                             setsockopt(sock, SOL_NETLINK, NETLINK_ADD_MEMBERSHIP,
314                                        &ext_groups, sizeof(ext_groups));
315     #endif
316
317                     /* Bind the socket to the netlink structure for anything. */
318                     ret = bind(sock, (struct sockaddr *)&snl, sizeof(snl));

Signed-off-by: Chirag Shah <chirag@nvidia.com>
zebra/kernel_netlink.c

index 7adbb5ab85c9e9cedcbc3ba0f963683e77d430d0..7e47822a2cc4d32984740d16cc2f0ba92ed0b85c 100644 (file)
@@ -309,9 +309,16 @@ static int netlink_socket(struct nlsock *nl, unsigned long groups,
                snl.nl_groups = groups;
 
 #if defined SOL_NETLINK
-               if (ext_groups)
-                       setsockopt(sock, SOL_NETLINK, NETLINK_ADD_MEMBERSHIP,
-                                  &ext_groups, sizeof(ext_groups));
+               if (ext_groups) {
+                       ret = setsockopt(sock, SOL_NETLINK,
+                                        NETLINK_ADD_MEMBERSHIP, &ext_groups,
+                                        sizeof(ext_groups));
+                       if (ret < 0) {
+                               zlog_notice(
+                                       "can't setsockopt NETLINK_ADD_MEMBERSHIP: %s(%d)",
+                                       safe_strerror(errno), errno);
+                       }
+               }
 #endif
 
                /* Bind the socket to the netlink structure for anything. */