From: Arran Cudbard-Bell Date: Mon, 16 Nov 2015 20:57:57 +0000 (-0500) Subject: fclose destroys file descriptor Closes #1390 X-Git-Tag: release_3_0_11~157 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8589e64954d911367c25dffc4f81e23aae51083b;p=thirdparty%2Ffreeradius-server.git fclose destroys file descriptor Closes #1390 --- diff --git a/src/lib/missing.c b/src/lib/missing.c index 5782bb7809c..fd3e636e383 100644 --- a/src/lib/missing.c +++ b/src/lib/missing.c @@ -196,12 +196,19 @@ int vdprintf (int fd, const char *format, va_list args) { int ret; FILE *fp; + int dup_fd; + + dup_fd = dup(fd); + if (dup_fd < 0) return -1; fp = fdopen(fd, "w"); - if (!fp) return -1; + if (!fp) { + close(dup_fd); + return -1; + } ret = vfprintf(fp, format, args); - fclose(fp); + fclose(fp); /* Also closes dup_fd */ return ret; }