From ec2a57f4764ae33d232399166243898b23055cf3 Mon Sep 17 00:00:00 2001 From: Corinna Vinschen Date: Thu, 16 Oct 2014 15:00:59 +0000 Subject: [PATCH] * libc/unix/getcwd.c (getcwd): Close directory also in case of an error. --- newlib/ChangeLog | 4 ++++ newlib/libc/unix/getcwd.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 2020fc8dd..1eb4ddc2c 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,7 @@ +2014-10-16 Sebastian Huber + + * libc/unix/getcwd.c (getcwd): Close directory also in case of an error. + 2014-10-10 Thomas Uhle * libc/include/_ansi.h: _LONG_LONG_TYPE definition removed. diff --git a/newlib/libc/unix/getcwd.c b/newlib/libc/unix/getcwd.c index 92f1b20fd..63f342402 100644 --- a/newlib/libc/unix/getcwd.c +++ b/newlib/libc/unix/getcwd.c @@ -57,7 +57,7 @@ getcwd (pt, size) size_t size; { register struct dirent *dp; - register DIR *dir; + register DIR *dir = NULL; register dev_t dev; register ino_t ino; register int first; @@ -237,6 +237,7 @@ getcwd (pt, size) bpt -= strlen (dp->d_name); bcopy (dp->d_name, bpt, strlen (dp->d_name)); (void) closedir (dir); + dir = NULL; /* Truncate any file name. */ *bup = '\0'; @@ -256,6 +257,8 @@ notfound: err: if (ptsize) free (pt); + if (dir) + (void) closedir (dir); free (up); return (char *) NULL; }