]> granicus.if.org Git - apache/commitdiff
Fix a segmentation fault if AuthzDBDQuery is not set.
authorChristophe Jaillet <jailletc36@apache.org>
Thu, 21 Sep 2017 19:31:32 +0000 (19:31 +0000)
committerChristophe Jaillet <jailletc36@apache.org>
Thu, 21 Sep 2017 19:31:32 +0000 (19:31 +0000)
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

CHANGES
modules/aaa/mod_authz_dbd.c

diff --git a/CHANGES b/CHANGES
index e97c4cb56277b963d6395e3e2a95519a1c9c78d5..86b94f3f321e081da49a4fc35828946d21ef881a 100644 (file)
--- 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 <luhliari redhat.com>]
+
   *) 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]
index 52aab3809a2a938eaee485f0b59d012335bc1635..e1bb6232cf39a3112bfd489273e489805569acdc 100644 (file)
@@ -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)