[evolution-data-server/gnome-3-34] LDAP: Change how LDAP query is constructed
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server/gnome-3-34] LDAP: Change how LDAP query is constructed
- Date: Mon, 11 Nov 2019 14:35:19 +0000 (UTC)
commit 4140934e7dea14d5abf2baabdd61a319c4eee897
Author: Milan Crha <mcrha redhat com>
Date: Mon Nov 11 15:29:50 2019 +0100
LDAP: Change how LDAP query is constructed
There could still happen a double-free due to the way the LDAP query
is constructed, which was also highly ineffective.
Related to https://gitlab.gnome.org/GNOME/evolution/issues/635
src/addressbook/backends/ldap/e-book-backend-ldap.c | 21 +++++----------------
1 file changed, 5 insertions(+), 16 deletions(-)
---
diff --git a/src/addressbook/backends/ldap/e-book-backend-ldap.c
b/src/addressbook/backends/ldap/e-book-backend-ldap.c
index ae5ed8d1f..cb05ae922 100644
--- a/src/addressbook/backends/ldap/e-book-backend-ldap.c
+++ b/src/addressbook/backends/ldap/e-book-backend-ldap.c
@@ -3962,7 +3962,6 @@ e_book_backend_ldap_build_query (EBookBackendLDAP *bl,
gchar *retval;
EBookBackendLDAPSExpData data;
gint i;
- gchar **strings;
data.list = NULL;
data.bl = bl;
@@ -3997,21 +3996,11 @@ e_book_backend_ldap_build_query (EBookBackendLDAP *bl,
if (data.list->next) {
g_warning ("LDAP: conversion of '%s' to ldap query string failed", query);
retval = NULL;
- }
- else {
- if (bl->priv->ldap_search_filter && *bl->priv->ldap_search_filter
- && g_ascii_strcasecmp (bl->priv->ldap_search_filter, "(objectClass=*)") != 0)
{
- strings = g_new0 (gchar *, 5);
- strings[0] = g_strdup ("(&");
- strings[1] = g_strdup_printf ("%s", bl->priv->ldap_search_filter);
- strings[2] = data.list->data;
- strings[3] = g_strdup (")");
- retval = g_strjoinv (" ", strings);
- for (i = 0; i < 4; i++)
- g_free (strings[i]);
- g_free (strings);
- }
- else {
+ } else {
+ if (bl->priv->ldap_search_filter && *bl->priv->ldap_search_filter &&
+ g_ascii_strcasecmp (bl->priv->ldap_search_filter, "(objectClass=*)") != 0) {
+ retval = g_strdup_printf ("(& %s %s)", bl->priv->ldap_search_filter, (const
gchar *) data.list->data);
+ } else {
retval = g_strdup (data.list->data);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]