summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common/getcwd.c
diff options
context:
space:
mode:
authorBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2011-05-10 20:19:46 +0200
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2011-05-10 20:19:46 +0200
commite48bd60ce9a70d190acfee7db98c0f163a2c5fdb (patch)
tree2dd7bf452ea83af5fbe1df1a5b1565946a2e98d2 /libc/sysdeps/linux/common/getcwd.c
parent025ec197fe9d069c6d705e6f7d1509bb9dc1ce56 (diff)
getcwd: Fix memory-leak in error path
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libc/sysdeps/linux/common/getcwd.c')
-rw-r--r--libc/sysdeps/linux/common/getcwd.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libc/sysdeps/linux/common/getcwd.c b/libc/sysdeps/linux/common/getcwd.c
index 75d7a1c8b..87510019e 100644
--- a/libc/sysdeps/linux/common/getcwd.c
+++ b/libc/sysdeps/linux/common/getcwd.c
@@ -69,7 +69,7 @@ static char *search_dir(dev_t this_dev, ino_t this_ino, char *path_buf, int path
slen++;
dp = opendir(path_buf);
- if (dp == 0) {
+ if (!dp) {
goto oops;
}
@@ -78,6 +78,7 @@ static char *search_dir(dev_t this_dev, ino_t this_ino, char *path_buf, int path
if (slow_search || this_ino == d->d_ino) {
# endif
if (slen + strlen(d->d_name) > path_size) {
+ closedir(dp);
goto oops;
}
strcpy(ptr + 1, d->d_name);