close fd when fdopen fails
authordoug <doug@openbsd.org>
Sat, 23 Aug 2014 15:29:55 +0000 (15:29 +0000)
committerdoug <doug@openbsd.org>
Sat, 23 Aug 2014 15:29:55 +0000 (15:29 +0000)
ok yasuoka@

usr.sbin/npppd/npppd/privsep.c

index 434c857..a1e0561 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: privsep.c,v 1.14 2014/07/18 13:16:22 yasuoka Exp $ */
+/*     $OpenBSD: privsep.c,v 1.15 2014/08/23 15:29:55 doug Exp $ */
 
 /*
  * Copyright (c) 2010 Yasuoka Masahiko <yasuoka@openbsd.org>
@@ -282,11 +282,16 @@ FILE *
 priv_fopen(const char *path)
 {
        int f;
+       FILE *fp;
 
        if ((f = priv_open(path, O_RDONLY, 0600)) < 0)
                return (NULL);
 
-       return fdopen(f, "r");
+       if ((fp = fdopen(f, "r")) == NULL) {
+               close(f);
+               return (NULL);
+       } else
+               return (fp);
 }
 
 int