From 9c0937366b05d759689eed9525a1e18b669aacc6 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Thu, 29 Oct 2009 09:37:42 -0600 Subject: [PATCH] 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 --- ChangeLog | 5 +++++ lib/mkdir.c | 8 +++++++- modules/mkdir | 1 - 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index bda6fbbf3..27528cb95 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2009-10-29 Eric Blake + 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 3d9f04380..e6dbc78e0 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 59d60fb4a..fa0931d27 100644 --- a/modules/mkdir +++ b/modules/mkdir @@ -7,7 +7,6 @@ m4/mkdir.m4 Depends-on: sys_stat -xalloc dirname configure.ac: -- 2.11.0