summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorAlex Yursha <alexyursha@gmail.com>2021-03-09 21:07:26 +0100
committerTomas Mraz <tomas@openssl.org>2021-03-30 19:13:08 +0200
commitaf2e1e9c81110ca1a156430686e2f171e80ebfa0 (patch)
treeebb2172462b67a7469bb1359739a4197cd94f2f0 /util
parentMerge OFB encrypt and decrypt test vectors. (diff)
downloadopenssl-af2e1e9c81110ca1a156430686e2f171e80ebfa0.tar.xz
openssl-af2e1e9c81110ca1a156430686e2f171e80ebfa0.zip
Print correct error message in utils/mkdir-p.pl
Commit 70a56b914772e6b21cda2a5742817ae4bb7290f1 introduced a regression. If utils/mkdir-p.pl fails to create a target dir because of insufficient file system permissions, the subsequent test for dir existence always fails and overwrites the system error. As a result, a user is presented with a misleading error message. E.g. if a user tries to create a dir under /usr/local and does not have permissions for it, the reported error message is "Cannot create directory /usr/local/lib: No such file or directory", whereas the expected error message is "Cannot create directory /usr/local/lib: Permission denied". This commit introduces a fix by declaring an additional local variable to cache the original error message from mkdir. If -d check fails and overwrites the system error, the user is still presented with the original error from mkdir. CLA: Trivial Reviewed-by: Shane Lontis <shane.lontis@oracle.com> Reviewed-by: Richard Levitte <levitte@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/14487)
Diffstat (limited to 'util')
-rwxr-xr-xutil/mkdir-p.pl3
1 files changed, 2 insertions, 1 deletions
diff --git a/util/mkdir-p.pl b/util/mkdir-p.pl
index dacf3ab16f..61a5826643 100755
--- a/util/mkdir-p.pl
+++ b/util/mkdir-p.pl
@@ -34,11 +34,12 @@ sub do_mkdir_p {
}
unless (mkdir($dir, 0777)) {
+ local($err) = $!;
if (-d $dir) {
# We raced against another instance doing the same thing.
return;
}
- die "Cannot create directory $dir: $!\n";
+ die "Cannot create directory $dir: $err\n";
}
print "created directory `$dir'\n";
}