mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-15 11:15:47 +00:00
zebra: fix fd going out of scope leaks the handle
the file descriptor is closed if it has been locally created. Signed-off-by: Philippe Guibert <philippe.guibert@6wind.com>
This commit is contained in:
parent
e2dcd0c2c5
commit
7529bf8f05
@ -185,7 +185,7 @@ ns_id_t zebra_ns_id_get(const char *netnspath, int fd_param)
|
|||||||
if (sock < 0) {
|
if (sock < 0) {
|
||||||
flog_err_sys(EC_LIB_SOCKET, "netlink( %u) socket() error: %s",
|
flog_err_sys(EC_LIB_SOCKET, "netlink( %u) socket() error: %s",
|
||||||
sock, safe_strerror(errno));
|
sock, safe_strerror(errno));
|
||||||
if (fd_param == -1)
|
if (netnspath)
|
||||||
close(fd);
|
close(fd);
|
||||||
return NS_UNKNOWN;
|
return NS_UNKNOWN;
|
||||||
}
|
}
|
||||||
@ -199,7 +199,7 @@ ns_id_t zebra_ns_id_get(const char *netnspath, int fd_param)
|
|||||||
"netlink( %u) socket() bind error: %s", sock,
|
"netlink( %u) socket() bind error: %s", sock,
|
||||||
safe_strerror(errno));
|
safe_strerror(errno));
|
||||||
close(sock);
|
close(sock);
|
||||||
if (fd_param == -1)
|
if (netnspath)
|
||||||
close(fd);
|
close(fd);
|
||||||
return NS_UNKNOWN;
|
return NS_UNKNOWN;
|
||||||
}
|
}
|
||||||
@ -222,7 +222,7 @@ ns_id_t zebra_ns_id_get(const char *netnspath, int fd_param)
|
|||||||
ret = send_receive(sock, nlh, seq, buf);
|
ret = send_receive(sock, nlh, seq, buf);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
close(sock);
|
close(sock);
|
||||||
if (fd_param == -1)
|
if (netnspath)
|
||||||
close(fd);
|
close(fd);
|
||||||
return NS_UNKNOWN;
|
return NS_UNKNOWN;
|
||||||
}
|
}
|
||||||
@ -267,7 +267,7 @@ ns_id_t zebra_ns_id_get(const char *netnspath, int fd_param)
|
|||||||
"netlink( %u) recvfrom() error 2 when reading: %s",
|
"netlink( %u) recvfrom() error 2 when reading: %s",
|
||||||
fd, safe_strerror(errno));
|
fd, safe_strerror(errno));
|
||||||
close(sock);
|
close(sock);
|
||||||
if (fd_param == -1)
|
if (netnspath)
|
||||||
close(fd);
|
close(fd);
|
||||||
if (errno == ENOTSUP) {
|
if (errno == ENOTSUP) {
|
||||||
zlog_debug("NEWNSID locally generated");
|
zlog_debug("NEWNSID locally generated");
|
||||||
@ -289,7 +289,7 @@ ns_id_t zebra_ns_id_get(const char *netnspath, int fd_param)
|
|||||||
ret = send_receive(sock, nlh, seq, buf);
|
ret = send_receive(sock, nlh, seq, buf);
|
||||||
if (ret < 0) {
|
if (ret < 0) {
|
||||||
close(sock);
|
close(sock);
|
||||||
if (fd_param == -1)
|
if (netnspath)
|
||||||
close(fd);
|
close(fd);
|
||||||
return NS_UNKNOWN;
|
return NS_UNKNOWN;
|
||||||
}
|
}
|
||||||
@ -321,7 +321,7 @@ ns_id_t zebra_ns_id_get(const char *netnspath, int fd_param)
|
|||||||
} while (len != 0 && ret == 0);
|
} while (len != 0 && ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fd_param == -1)
|
if (netnspath)
|
||||||
close(fd);
|
close(fd);
|
||||||
close(sock);
|
close(sock);
|
||||||
return return_nsid;
|
return return_nsid;
|
||||||
|
Loading…
Reference in New Issue
Block a user