Introduce a wrapper which does the sanity checking and returns NULL
in case fd is invalid.

Signed-off-by: Phil Sutter <p...@nwl.cc>
---
 misc/nstat.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/misc/nstat.c b/misc/nstat.c
index 23e1569d7872b..c1e7ddec271e2 100644
--- a/misc/nstat.c
+++ b/misc/nstat.c
@@ -252,9 +252,16 @@ static void load_ugly_table(FILE *fp)
        }
 }
 
+static FILE *fdopen_null(int fd, const char *mode)
+{
+       if (fd < 0)
+               return NULL;
+       return fdopen(fd, mode);
+}
+
 static void load_sctp_snmp(void)
 {
-       FILE *fp = fdopen(net_sctp_snmp_open(), "r");
+       FILE *fp = fdopen_null(net_sctp_snmp_open(), "r");
 
        if (fp) {
                load_good_table(fp);
@@ -264,7 +271,7 @@ static void load_sctp_snmp(void)
 
 static void load_snmp(void)
 {
-       FILE *fp = fdopen(net_snmp_open(), "r");
+       FILE *fp = fdopen_null(net_snmp_open(), "r");
 
        if (fp) {
                load_ugly_table(fp);
@@ -274,7 +281,7 @@ static void load_snmp(void)
 
 static void load_snmp6(void)
 {
-       FILE *fp = fdopen(net_snmp6_open(), "r");
+       FILE *fp = fdopen_null(net_snmp6_open(), "r");
 
        if (fp) {
                load_good_table(fp);
@@ -284,7 +291,7 @@ static void load_snmp6(void)
 
 static void load_netstat(void)
 {
-       FILE *fp = fdopen(net_netstat_open(), "r");
+       FILE *fp = fdopen_null(net_netstat_open(), "r");
 
        if (fp) {
                load_ugly_table(fp);
-- 
2.13.1

Reply via email to