summaryrefslogtreecommitdiff
path: root/lib/mkdir.c
diff options
context:
space:
mode:
authorEric Blake <ebb9@byu.net>2009-10-29 09:37:42 -0600
committerEric Blake <ebb9@byu.net>2009-10-29 18:39:31 -0600
commit9c0937366b05d759689eed9525a1e18b669aacc6 (patch)
treefda9a3548ca71b470b1d7d96483a3eb66b17e21a /lib/mkdir.c
parentb886ebac9e37729d68e765b141b099ec5b24ab2c (diff)
downloadgnulib-9c0937366b05d759689eed9525a1e18b669aacc6.tar.gz
mkdir: make safe for libraries
xstrdup is too dangerous to use in a syscall replacement. * modules/mkdir (Depends-on): Drop xalloc. * lib/mkdir.c (rpl_mkdir): Fail with ENOMEM rather than calling exit. Signed-off-by: Eric Blake <ebb9@byu.net>
Diffstat (limited to 'lib/mkdir.c')
-rw-r--r--lib/mkdir.c8
1 files changed, 7 insertions, 1 deletions
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