diff options
author | Ron Yorston <rmy@pobox.com> | 2021-03-24 11:55:30 +0000 |
---|---|---|
committer | Ron Yorston <rmy@pobox.com> | 2021-03-24 12:43:15 +0000 |
commit | 355a7a6c1e9626b7afe8758a6095f3cf275c52e1 (patch) | |
tree | 6dab679c15b049cab97212e0b43077132eec1fbe /libbb/make_directory.c | |
parent | 71ecc8033e6989996057b32577e71148fd544596 (diff) | |
parent | 889425812b5cda8b3394d73253cbde7355fb1115 (diff) | |
download | busybox-w32-w32_1_26_2.tar.gz busybox-w32-w32_1_26_2.tar.bz2 busybox-w32-w32_1_26_2.zip |
Merge tag '1_26_2' into w32_1_26_2w32_1_26_2
Diffstat (limited to 'libbb/make_directory.c')
-rw-r--r-- | libbb/make_directory.c | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/libbb/make_directory.c b/libbb/make_directory.c index 3980376ec..840c525b0 100644 --- a/libbb/make_directory.c +++ b/libbb/make_directory.c | |||
@@ -35,9 +35,20 @@ int FAST_FUNC bb_make_directory(char *path, long mode, int flags) | |||
35 | char c; | 35 | char c; |
36 | struct stat st; | 36 | struct stat st; |
37 | 37 | ||
38 | /* Happens on bb_make_directory(dirname("no_slashes"),...) */ | 38 | /* "path" can be a result of dirname(). |
39 | if (LONE_CHAR(path, '.')) | 39 | * dirname("no_slashes") returns ".", possibly read-only. |
40 | * musl dirname() can return read-only "/" too. | ||
41 | * We need writable string. And for "/", "." (and ".."?) | ||
42 | * nothing needs to be created anyway. | ||
43 | */ | ||
44 | if (LONE_CHAR(path, '/')) | ||
40 | return 0; | 45 | return 0; |
46 | if (path[0] == '.') { | ||
47 | if (path[1] == '\0') | ||
48 | return 0; /* "." */ | ||
49 | // if (path[1] == '.' && path[2] == '\0') | ||
50 | // return 0; /* ".." */ | ||
51 | } | ||
41 | 52 | ||
42 | org_mask = cur_mask = (mode_t)-1L; | 53 | org_mask = cur_mask = (mode_t)-1L; |
43 | s = path; | 54 | s = path; |