@@ -166,7 +166,7 @@ od_retcode_t od_ldap_server_prepare(od_logger_t *logger, od_ldap_server_t *serv,
166166
167167 if (serv -> endpoint -> ldapbasedn ) {
168168 // copy pasted from ./src/backend/libpq/auth.c:2635
169- char * filter ;
169+ char * filter = NULL ;
170170 LDAPMessage * search_message ;
171171 LDAPMessage * entry ;
172172 char * attributes [] = { LDAP_NO_ATTRS , NULL };
@@ -186,8 +186,15 @@ od_retcode_t od_ldap_server_prepare(od_logger_t *logger, od_ldap_server_t *serv,
186186 }
187187
188188 if (serv -> endpoint -> ldapsearchfilter ) {
189- od_asprintf (& filter , "(&%s%s)" , filter ,
189+ char * prev_filter = strdup (filter );
190+ free (filter );
191+ if (prev_filter == NULL ) {
192+ return NOT_OK_RESPONSE ;
193+ }
194+
195+ od_asprintf (& filter , "(&%s%s)" , prev_filter ,
190196 serv -> endpoint -> ldapsearchfilter );
197+ free (prev_filter );
191198 }
192199
193200 rc = ldap_search_s (serv -> conn , serv -> endpoint -> ldapbasedn ,
@@ -198,10 +205,11 @@ od_retcode_t od_ldap_server_prepare(od_logger_t *logger, od_ldap_server_t *serv,
198205 "basedn search entries with filter: %s and attrib %s " ,
199206 filter , attributes [0 ]);
200207
208+ free (filter );
209+
201210 if (rc != LDAP_SUCCESS ) {
202211 od_error (logger , "auth_ldap" , client , NULL ,
203212 "basednn search result: %d" , rc );
204- free (filter );
205213 return NOT_OK_RESPONSE ;
206214 }
207215
@@ -211,13 +219,10 @@ od_retcode_t od_ldap_server_prepare(od_logger_t *logger, od_ldap_server_t *serv,
211219 "basedn search entries count: %d" , count );
212220
213221 if (count == 0 ) {
214- free (filter );
215222 ldap_msgfree (search_message );
216223 return LDAP_INSUFFICIENT_ACCESS ;
217- } else {
218224 }
219225
220- free (filter );
221226 ldap_msgfree (search_message );
222227 return NOT_OK_RESPONSE ;
223228 }
@@ -237,7 +242,6 @@ od_retcode_t od_ldap_server_prepare(od_logger_t *logger, od_ldap_server_t *serv,
237242 rc = od_ldap_search_storage_credentials (
238243 logger , values , rule , client );
239244 if (rc != OK_RESPONSE ) {
240- free (filter );
241245 ldap_memfree (dn );
242246 ldap_value_free_len (values );
243247 ldap_msgfree (search_message );
@@ -246,7 +250,6 @@ od_retcode_t od_ldap_server_prepare(od_logger_t *logger, od_ldap_server_t *serv,
246250 } else {
247251 od_debug (logger , "auth_ldap" , client , NULL ,
248252 "error: empty search results" );
249- free (filter );
250253 ldap_memfree (dn );
251254 ldap_value_free_len (values );
252255 ldap_msgfree (search_message );
@@ -256,7 +259,6 @@ od_retcode_t od_ldap_server_prepare(od_logger_t *logger, od_ldap_server_t *serv,
256259 }
257260 auth_user = strdup (dn );
258261
259- free (filter );
260262 ldap_memfree (dn );
261263 ldap_msgfree (search_message );
262264
0 commit comments