]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
Use dummy LDAP handle to tidy code
authorNick Porter <nick@portercomputing.co.uk>
Thu, 8 Sep 2022 13:16:36 +0000 (14:16 +0100)
committerNick Porter <nick@portercomputing.co.uk>
Wed, 21 Sep 2022 07:25:43 +0000 (08:25 +0100)
src/lib/ldap/base.h
src/lib/ldap/map.c
src/modules/rlm_ldap/groups.c
src/modules/rlm_ldap/rlm_ldap.c
src/modules/rlm_ldap/rlm_ldap.h
src/modules/rlm_ldap/user.c

index 1fd0f78d19e8ce83c01c2baaff5032048179b104..541f06d8742b27210e3d256127e61e0ff2b24ccf 100644 (file)
@@ -781,7 +781,7 @@ int         fr_ldap_map_verify(map_t *map, void *instance);
 
 int            fr_ldap_map_expand(fr_ldap_map_exp_t *expanded, request_t *request, map_list_t const *maps);
 
-int            fr_ldap_map_do(request_t *request, LDAP *handle,
+int            fr_ldap_map_do(request_t *request,
                               char const *valuepair_attr, fr_ldap_map_exp_t const *expanded, LDAPMessage *entry);
 
 /*
index f67d0bfbb7f16170e25c7c913daf7c1af6333b32..d529a4747fbaa0f3f9279d1055215261aa83e288 100644 (file)
@@ -308,7 +308,6 @@ int fr_ldap_map_expand(fr_ldap_map_exp_t *expanded, request_t *request, map_list
  * This is *NOT* atomic, but there's no condition for which we should error out...
  *
  * @param[in] request          Current request.
- * @param[in] handle           associated with entry.
  * @param[in] valuepair_attr   Treat attribute with this name as holding complete AVP definitions.
  * @param[in] expanded         attributes (rhs of map).
  * @param[in] entry            to retrieve attributes from.
@@ -316,7 +315,7 @@ int fr_ldap_map_expand(fr_ldap_map_exp_t *expanded, request_t *request, map_list
  *     - Number of maps successfully applied.
  *     - -1 on failure.
  */
-int fr_ldap_map_do(request_t *request, LDAP *handle,
+int fr_ldap_map_do(request_t *request,
                   char const *valuepair_attr, fr_ldap_map_exp_t const *expanded, LDAPMessage *entry)
 {
        map_t const             *map = NULL;
@@ -325,6 +324,7 @@ int fr_ldap_map_do(request_t *request, LDAP *handle,
 
        fr_ldap_result_t        result;
        char const              *name;
+       LDAP                    *handle = fr_ldap_handle_thread_local();
 
        while ((map = map_list_next(expanded->maps, map))) {
                int ret;
index 6b2c1e032270c00754f7992ee3e0f8a250fe6ef8..c96cd69a35e558055592ec6a14342a503458a205 100644 (file)
@@ -273,13 +273,12 @@ finish:
  * @param[in] request          Current request.
  * @param[in] ttrunk           to use.
  * @param[in] entry            retrieved by rlm_ldap_find_user or fr_ldap_search.
- * @param[in] handle           on which original object was found.
  * @param[in] attr             membership attribute to look for in the entry.
  * @return One of the RLM_MODULE_* values.
  */
 unlang_action_t rlm_ldap_cacheable_userobj(rlm_rcode_t *p_result, rlm_ldap_t const *inst,
                                           request_t *request, fr_ldap_thread_trunk_t *ttrunk,
-                                          LDAPMessage *entry, LDAP *handle, char const *attr)
+                                          LDAPMessage *entry, char const *attr)
 {
        rlm_rcode_t rcode = RLM_MODULE_OK;
 
@@ -305,7 +304,7 @@ unlang_action_t rlm_ldap_cacheable_userobj(rlm_rcode_t *p_result, rlm_ldap_t con
        /*
         *      Parse the membership information we got in the initial user query.
         */
-       values = ldap_get_values_len(handle, entry, attr);
+       values = ldap_get_values_len(fr_ldap_handle_thread_local(), entry, attr);
        if (!values) {
                RDEBUG2("No cacheable group memberships found in user object");
 
index 4b64c7a6db4e3eabe6a593dac915bcb75bd4e123..f4973ba5467d23fd956ab78c7e7722d8e30e0a96 100644 (file)
@@ -1110,7 +1110,7 @@ static unlang_action_t rlm_ldap_map_profile(rlm_rcode_t *p_result, rlm_ldap_t co
 
        RDEBUG2("Processing profile attributes");
        RINDENT();
-       if (fr_ldap_map_do(request, query->ldap_conn->handle, inst->valuepair_attr, expanded, entry) > 0) rcode = RLM_MODULE_UPDATED;
+       if (fr_ldap_map_do(request, inst->valuepair_attr, expanded, entry) > 0) rcode = RLM_MODULE_UPDATED;
        REXDENT();
 
        RETURN_MODULE_RCODE(rcode);
@@ -1180,7 +1180,7 @@ static unlang_action_t CC_HINT(nonnull) mod_authorize(rlm_rcode_t *p_result, mod
         *      Check for access.
         */
        if (inst->userobj_access_attr) {
-               rcode = rlm_ldap_check_access(inst, request, handle, entry);
+               rcode = rlm_ldap_check_access(inst, request, entry);
                if (rcode != RLM_MODULE_OK) {
                        goto finish;
                }
@@ -1191,7 +1191,7 @@ static unlang_action_t CC_HINT(nonnull) mod_authorize(rlm_rcode_t *p_result, mod
         */
        if (inst->cacheable_group_dn || inst->cacheable_group_name) {
                if (inst->userobj_membership_attr) {
-                       rlm_ldap_cacheable_userobj(&rcode, inst, request, ttrunk, entry, handle, inst->userobj_membership_attr);
+                       rlm_ldap_cacheable_userobj(&rcode, inst, request, ttrunk, entry, inst->userobj_membership_attr);
                        if (rcode != RLM_MODULE_OK) {
                                goto finish;
                        }
@@ -1321,7 +1321,7 @@ skip_edir:
        if (!map_list_empty(&inst->user_map) || inst->valuepair_attr) {
                RDEBUG2("Processing user attributes");
                RINDENT();
-               if (fr_ldap_map_do(request, handle, inst->valuepair_attr,
+               if (fr_ldap_map_do(request, inst->valuepair_attr,
                                   &expanded, entry) > 0) rcode = RLM_MODULE_UPDATED;
                REXDENT();
                rlm_ldap_check_reply(mctx, request, ttrunk);
index 3d96db18df86dbfbc3f038e064b15cdf64ce4d3b..f29bc44adec082c99cf2941e81f3ad44f2753689 100644 (file)
@@ -153,7 +153,7 @@ extern HIDDEN fr_dict_attr_t const *attr_user_name;
 char const *rlm_ldap_find_user(rlm_ldap_t const *inst, request_t *request, fr_ldap_thread_trunk_t *tconn,
                               char const *attrs[], bool force, LDAPMessage **result, LDAP **handle, rlm_rcode_t *rcode);
 
-rlm_rcode_t rlm_ldap_check_access(rlm_ldap_t const *inst, request_t *request, LDAP *handle, LDAPMessage *entry);
+rlm_rcode_t rlm_ldap_check_access(rlm_ldap_t const *inst, request_t *request, LDAPMessage *entry);
 
 void rlm_ldap_check_reply(module_ctx_t const *mctx, request_t *request, fr_ldap_thread_trunk_t const *ttrunk);
 
@@ -162,7 +162,7 @@ void rlm_ldap_check_reply(module_ctx_t const *mctx, request_t *request, fr_ldap_
  */
 unlang_action_t rlm_ldap_cacheable_userobj(rlm_rcode_t *p_result, rlm_ldap_t const *inst,
                                           request_t *request, fr_ldap_thread_trunk_t *ttrunk,
-                                          LDAPMessage *entry, LDAP *handle, char const *attr);
+                                          LDAPMessage *entry, char const *attr);
 
 unlang_action_t rlm_ldap_cacheable_groupobj(rlm_rcode_t *p_result,
                                            rlm_ldap_t const *inst, request_t *request, fr_ldap_thread_trunk_t *ttrunk);
index b54f5820dc9128367dc7f75801c180a4d3e0dab0..d8caa7a60a9b5a7e4aad4d537794e387add7e8ba 100644 (file)
@@ -190,18 +190,17 @@ finish:
  *
  * @param[in] inst rlm_ldap configuration.
  * @param[in] request Current request.
- * @param[in] handle used to retrieve access attributes.
  * @param[in] entry retrieved by rlm_ldap_find_user or fr_ldap_search.
  * @return
  *     - #RLM_MODULE_DISALLOW if the user was denied access.
  *     - #RLM_MODULE_OK otherwise.
  */
-rlm_rcode_t rlm_ldap_check_access(rlm_ldap_t const *inst, request_t *request, LDAP *handle, LDAPMessage *entry)
+rlm_rcode_t rlm_ldap_check_access(rlm_ldap_t const *inst, request_t *request, LDAPMessage *entry)
 {
        rlm_rcode_t rcode = RLM_MODULE_OK;
        struct berval **values = NULL;
 
-       values = ldap_get_values_len(handle, entry, inst->userobj_access_attr);
+       values = ldap_get_values_len(fr_ldap_handle_thread_local(), entry, inst->userobj_access_attr);
        if (values) {
                if (inst->access_positive) {
                        if ((values[0]->bv_len >= 5) && (strncasecmp(values[0]->bv_val, "false", 5) == 0)) {