summaryrefslogtreecommitdiffstats
path: root/lib/libstand/close.c
diff options
context:
space:
mode:
authormarcel <marcel@FreeBSD.org>2013-12-18 04:52:30 +0000
committermarcel <marcel@FreeBSD.org>2013-12-18 04:52:30 +0000
commitcec28dc92dc9b76f7fd200ecacbc480ba3fd4e64 (patch)
tree2671ac69b56f9171001b844f7e3ea3b2142e8cae /lib/libstand/close.c
parent9ca55833b64341e1f2e98b057767806ce3483918 (diff)
downloadFreeBSD-src-cec28dc92dc9b76f7fd200ecacbc480ba3fd4e64.zip
FreeBSD-src-cec28dc92dc9b76f7fd200ecacbc480ba3fd4e64.tar.gz
Clear f_rabuf after freeing the memory it points to. This prevents a
possible double free. Obtained from: Juniper Networks, Inc.
Diffstat (limited to 'lib/libstand/close.c')
-rw-r--r--lib/libstand/close.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/libstand/close.c b/lib/libstand/close.c
index 61b1b0d..939f025 100644
--- a/lib/libstand/close.c
+++ b/lib/libstand/close.c
@@ -75,8 +75,10 @@ close(int fd)
errno = EBADF;
return (-1);
}
- if (f->f_rabuf != NULL)
+ if (f->f_rabuf != NULL) {
free(f->f_rabuf);
+ f->f_rabuf = NULL;
+ }
if (!(f->f_flags & F_RAW) && f->f_ops)
err1 = (f->f_ops->fo_close)(f);
if (!(f->f_flags & F_NODEV) && f->f_dev)
OpenPOWER on IntegriCloud