diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | lib/mkdir.c | 8 | ||||
-rw-r--r-- | modules/mkdir | 1 |
3 files changed, 12 insertions, 2 deletions
@@ -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: |