From: Alex Yursha Date: Tue, 9 Mar 2021 20:07:26 +0000 (-1000) Subject: Print correct error message in utils/mkdir-p.pl X-Git-Tag: openssl-3.0.0-alpha14~83 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=af2e1e9c81110ca1a156430686e2f171e80ebfa0;p=thirdparty%2Fopenssl.git 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 Reviewed-by: Richard Levitte Reviewed-by: Tomas Mraz (Merged from https://github.com/openssl/openssl/pull/14487) --- diff --git a/util/mkdir-p.pl b/util/mkdir-p.pl index dacf3ab16f9..61a58266438 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"; }