summaryrefslogtreecommitdiff
path: root/modules/aaa
diff options
context:
space:
mode:
authorChristophe Jaillet <jailletc36@apache.org>2017-09-21 19:31:32 +0000
committerChristophe Jaillet <jailletc36@apache.org>2017-09-21 19:31:32 +0000
commit1fb78df714eba88d185cd63f0a459870182c0939 (patch)
tree2f7e40f0664fab9aa4d3d671cee2a9801289c57d /modules/aaa
parent759fb306d8001284075a0527cce03b55c8e7aa4e (diff)
downloadhttpd-1fb78df714eba88d185cd63f0a459870182c0939.tar.gz
Fix a segmentation fault if AuthzDBDQuery is not set.
PR 61546 [Lubos Uhliarik <luhliari redhat.com>] git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1809209 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'modules/aaa')
-rw-r--r--modules/aaa/mod_authz_dbd.c10
1 files changed, 8 insertions, 2 deletions
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)