From a4099762df4f72c71f30dee739d4734aa2bd552d Mon Sep 17 00:00:00 2001 From: Joe Orton Date: Fri, 20 Oct 2017 15:40:37 +0000 Subject: [PATCH] * support/htpasswd.c (main): Only check for readability if running in verify (-v) mode. PR: 61631 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1812756 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ support/htpasswd.c | 12 +++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 3294bfc75e..704d38d587 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) htpasswd: Don't fail in -v mode if password file is unwritable. + PR 61631. [Joe Orton] + *) core: A signal received while stopping could have crashed the main process. PR 61558. [Yann Ylavic] diff --git a/support/htpasswd.c b/support/htpasswd.c index 65a0b9c3bb..660a27c792 100644 --- a/support/htpasswd.c +++ b/support/htpasswd.c @@ -329,7 +329,7 @@ int main(int argc, const char * const argv[]) */ if (!(mask & APHTP_NOFILE)) { existing_file = exists(pwfilename, pool); - if (existing_file) { + if (existing_file && (mask & APHTP_VERIFY) == 0) { /* * Check that this existing file is readable and writable. */ @@ -339,6 +339,16 @@ int main(int argc, const char * const argv[]) exit(ERR_FILEPERM); } } + else if (existing_file && (mask & APHTP_VERIFY) != 0) { + /* + * Check that this existing file is readable. + */ + if (!accessible(pool, pwfilename, APR_FOPEN_READ)) { + apr_file_printf(errfile, "%s: cannot open file %s for " + "read access" NL, argv[0], pwfilename); + exit(ERR_FILEPERM); + } + } else { /* * Error out if -c was omitted for this non-existant file. -- 2.40.0