From 1fb78df714eba88d185cd63f0a459870182c0939 Mon Sep 17 00:00:00 2001 From: Christophe Jaillet Date: Thu, 21 Sep 2017 19:31:32 +0000 Subject: [PATCH] Fix a segmentation fault if AuthzDBDQuery is not set. PR 61546 [Lubos Uhliarik ] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1809209 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ modules/aaa/mod_authz_dbd.c | 10 ++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGES b/CHANGES index e97c4cb562..86b94f3f32 100644 --- a/CHANGES +++ b/CHANGES @@ -1,6 +1,9 @@ -*- coding: utf-8 -*- Changes with Apache 2.5.0 + *) mod_authz_dbd: fix a segmentation fault if AuthzDBDQuery is not set. + PR 61546 [Lubos Uhliarik ] + *) mod_ssl: unshare SSLSrvConfigRec instances between base server and virtual hosts. This avoids overwrites of later initializattions (vhost_id), selective disables by "SSLEngine addr-list" and certificate/key pickup from mod_md. [Stefan Eissing] diff --git a/modules/aaa/mod_authz_dbd.c b/modules/aaa/mod_authz_dbd.c index 52aab3809a..e1bb6232cf 100644 --- a/modules/aaa/mod_authz_dbd.c +++ b/modules/aaa/mod_authz_dbd.c @@ -119,7 +119,7 @@ static int authz_dbd_login(request_rec *r, authz_dbd_cfg *cfg, const char *newuri = NULL; int nrows; const char *message; - ap_dbd_t *dbd = dbd_handle(r); + ap_dbd_t *dbd; apr_dbd_prepared_t *query; apr_dbd_results_t *res = NULL; apr_dbd_row_t *row = NULL; @@ -129,6 +129,8 @@ static int authz_dbd_login(request_rec *r, authz_dbd_cfg *cfg, "No query configured for %s!", action); return HTTP_INTERNAL_SERVER_ERROR; } + + dbd = dbd_handle(r); if (dbd == NULL) { ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(02902) "No db handle available for %s! " @@ -136,6 +138,7 @@ static int authz_dbd_login(request_rec *r, authz_dbd_cfg *cfg, action); return HTTP_INTERNAL_SERVER_ERROR; } + query = apr_hash_get(dbd->prepared, cfg->query, APR_HASH_KEY_STRING); if (query == NULL) { ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01643) @@ -212,7 +215,7 @@ static int authz_dbd_group_query(request_rec *r, authz_dbd_cfg *cfg, /* SELECT group FROM authz WHERE user = %s */ int rv; const char *message; - ap_dbd_t *dbd = dbd_handle(r); + ap_dbd_t *dbd; apr_dbd_prepared_t *query; apr_dbd_results_t *res = NULL; apr_dbd_row_t *row = NULL; @@ -222,12 +225,15 @@ static int authz_dbd_group_query(request_rec *r, authz_dbd_cfg *cfg, "No query configured for dbd-group!"); return HTTP_INTERNAL_SERVER_ERROR; } + + dbd = dbd_handle(r); if (dbd == NULL) { ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(02903) "No db handle available for dbd-query! " "Check your database access"); return HTTP_INTERNAL_SERVER_ERROR; } + query = apr_hash_get(dbd->prepared, cfg->query, APR_HASH_KEY_STRING); if (query == NULL) { ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r, APLOGNO(01650) -- 2.50.1