From c51577cd133a4b569349983f2e49933d0a124a0b Mon Sep 17 00:00:00 2001 From: Matt Tierney Date: Wed, 15 Feb 2012 18:20:38 -0500 Subject: [PATCH] ss: Close file descriptors in tcp_show_netlink. ss: Close file descriptors in tcp_show_netlink. Signed-off-by: Matt Tierney --- misc/ss.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/misc/ss.c b/misc/ss.c index eb42fd6..2caac4a 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -1563,6 +1563,7 @@ static int tcp_show_netlink(struct filter *f, FILE *dump_fp, int socktype) } if (status == 0) { fprintf(stderr, "EOF on netlink\n"); + close(fd); return 0; } @@ -1578,8 +1579,10 @@ static int tcp_show_netlink(struct filter *f, FILE *dump_fp, int socktype) h->nlmsg_seq != 123456) goto skip_it; - if (h->nlmsg_type == NLMSG_DONE) + if (h->nlmsg_type == NLMSG_DONE) { + close(fd); return 0; + } if (h->nlmsg_type == NLMSG_ERROR) { struct nlmsgerr *err = (struct nlmsgerr*)NLMSG_DATA(h); if (h->nlmsg_len < NLMSG_LENGTH(sizeof(struct nlmsgerr))) { @@ -1588,6 +1591,7 @@ static int tcp_show_netlink(struct filter *f, FILE *dump_fp, int socktype) errno = -err->error; perror("TCPDIAG answers"); } + close(fd); return 0; } if (!dump_fp) { @@ -1596,8 +1600,10 @@ static int tcp_show_netlink(struct filter *f, FILE *dump_fp, int socktype) continue; } err = tcp_show_sock(h, NULL); - if (err < 0) + if (err < 0) { + close(fd); return err; + } } skip_it: @@ -1612,6 +1618,7 @@ skip_it: exit(1); } } + close(fd); return 0; } -- 2.39.2