diff options
author | Christophe Jaillet <jailletc36@apache.org> | 2017-09-21 19:31:32 +0000 |
---|---|---|
committer | Christophe Jaillet <jailletc36@apache.org> | 2017-09-21 19:31:32 +0000 |
commit | 1fb78df714eba88d185cd63f0a459870182c0939 (patch) | |
tree | 2f7e40f0664fab9aa4d3d671cee2a9801289c57d /modules/aaa | |
parent | 759fb306d8001284075a0527cce03b55c8e7aa4e (diff) | |
download | httpd-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.c | 10 |
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) |