summaryrefslogtreecommitdiff
path: root/file_io/unix
diff options
context:
space:
mode:
authorjorton <jorton@13f79535-47bb-0310-9956-ffa450edef68>2005-09-24 22:09:35 +0000
committerjorton <jorton@13f79535-47bb-0310-9956-ffa450edef68>2005-09-24 22:09:35 +0000
commit88d8ee970fb1b7547267fd31912f199dbafd78e1 (patch)
treef426e4174fb9242a858af73b46388ed9db253264 /file_io/unix
parent6f6a53efbeda1b6b1b8c3a48fc5424f2f428a3fe (diff)
downloadlibapr-88d8ee970fb1b7547267fd31912f199dbafd78e1.tar.gz
* file_io/unix/dir.c (apr_dir_make_recursive): Fix infinite recursion
if mkdir fails for all path components. * test/testdir.c (test_rmkdir_nocwd): Add test case. git-svn-id: http://svn.apache.org/repos/asf/apr/apr/trunk@291339 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'file_io/unix')
-rw-r--r--file_io/unix/dir.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/file_io/unix/dir.c b/file_io/unix/dir.c
index eed7f3a41..849e89d7e 100644
--- a/file_io/unix/dir.c
+++ b/file_io/unix/dir.c
@@ -312,6 +312,11 @@ apr_status_t apr_dir_make_recursive(const char *path, apr_fileperms_t perm,
char *dir;
dir = path_remove_last_component(path, pool);
+ /* If there is no path left, give up. */
+ if (dir[0] == '\0') {
+ return apr_err;
+ }
+
apr_err = apr_dir_make_recursive(dir, perm, pool);
if (!apr_err)