summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--lib/mkdir.c8
-rw-r--r--modules/mkdir1
3 files changed, 12 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index bda6fbbf3c..27528cb958 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,10 @@
2009-10-29 Eric Blake <ebb9@byu.net>
+ mkdir: make safe for libraries
+ * modules/mkdir (Depends-on): Drop xalloc.
+ * lib/mkdir.c (rpl_mkdir): Fail with ENOMEM rather than calling
+ exit.
+
tests: avoid some compiler warnings
* tests/test-getaddrinfo.c (simple): Mark static, and allow string
literals.
diff --git a/lib/mkdir.c b/lib/mkdir.c
index 3d9f043802..e6dbc78e09 100644
--- a/lib/mkdir.c
+++ b/lib/mkdir.c
@@ -56,7 +56,13 @@ rpl_mkdir (char const *dir, mode_t mode maybe_unused)
if (len && dir[len - 1] == '/')
{
- tmp_dir = xstrdup (dir);
+ tmp_dir = strdup (dir);
+ if (!tmp_dir)
+ {
+ /* Rather than rely on strdup-posix, we set errno ourselves. */
+ errno = ENOMEM;
+ return -1;
+ }
strip_trailing_slashes (tmp_dir);
}
else
diff --git a/modules/mkdir b/modules/mkdir
index 59d60fb4ae..fa0931d275 100644
--- a/modules/mkdir
+++ b/modules/mkdir
@@ -7,7 +7,6 @@ m4/mkdir.m4
Depends-on:
sys_stat
-xalloc
dirname
configure.ac: