From: Nick Kew Date: Tue, 20 Jul 2010 01:34:39 +0000 (+0000) Subject: Don't risk segfault in authz if r->user is not set X-Git-Tag: 2.3.7~77 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f5dc2a1177d90138c9c5686a9eefb77b9a77ac61;p=thirdparty%2Fapache%2Fhttpd.git Don't risk segfault in authz if r->user is not set PR 42995 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@965709 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/CHANGES b/CHANGES index 6b82bb6c400..51e520f9699 100644 --- a/CHANGES +++ b/CHANGES @@ -32,6 +32,10 @@ Changes with Apache 2.3.7 *) CGI vars: allow PATH to be set by SetEnv, consistent with LD_LIBRARY_PATH PR 43906 [Nick Kew] + *) Core: Extra robustness: don't try authz and segfault if authn + fails to set r->user. Log bug and return 500 instead. + PR 42995 [Nick Kew] + Changes with Apache 2.3.6 *) SECURITY: CVE-2009-3555 (cve.mitre.org) diff --git a/server/request.c b/server/request.c index bc261829ab8..7ce9b80cd49 100644 --- a/server/request.c +++ b/server/request.c @@ -225,6 +225,14 @@ AP_DECLARE(int) ap_process_request_internal(request_rec *r) if ((access_status = ap_run_check_user_id(r)) != OK) { return decl_die(access_status, "check user", r); } + if (r->user == NULL) { + /* don't let buggy authn module crash us in authz */ + ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, + "Buggy authn provider failed to set user for %s", + r->uri); + access_status = HTTP_INTERNAL_SERVER_ERROR; + return decl_die(access_status, "check user", r); + } if ((access_status = ap_run_auth_checker(r)) != OK) { return decl_die(access_status, "check authorization", r); }