Re: [evolution-patches] Patch to fix bug #69611 Connector LDAP authtication using username@domain
- From: Jeffrey Stedfast <fejj ximian com>
- To: John Morris <john austin homelinux net>
- Cc: evolution-patches lists ximian com
- Subject: Re: [evolution-patches] Patch to fix bug #69611 Connector LDAP authtication using username domain
- Date: Wed, 01 Dec 2004 10:01:51 -0500
it's better to attach the patch and check off the "Show inline" checkbox
that said, I'm not an addressbook dev so I can't review this.
Jeff
On Tue, 2004-11-30 at 22:46, John Morris wrote:
> oops, Forgot set preformat mode. My patch got line-wrapped. Here's another try.
>
> --- ximian-connector-2.0.2/lib/e2k-global-catalog.c 2004-11-30 17:41:40.000000000 -0600
> +++ ximian-connector-2.0.2-fix/lib/e2k-global-catalog.c 2004-11-30 17:41:02.000000000 -0600
> @@ -242,6 +242,9 @@
> char *nonce, *default_domain;
> GByteArray *ba;
> struct berval ldap_buf;
> + gchar **splitdomain;
> + char *nt_name;
> + char *nt_domain;
>
> /* Create and send NTLM request */
> ba = xntlm_negotiate ();
> @@ -255,6 +258,20 @@
> return ldap_error;
> }
>
> + /* If user had to enter user domain instead of domain\user as username,
> + * extract user and domain so authentication will work.
> + */
> + if (g_strrstr (gc->priv->user, "@")) {
> + splitdomain = g_strsplit (gc->priv->user, "@", 2);
> + nt_name = g_strdup (splitdomain[0]);
> + nt_domain = g_strdup (splitdomain[1]);
> + g_strfreev (splitdomain);
> + }
> + else {
> + nt_name = g_strdup (gc->priv->user);
> + nt_domain = gc->priv->nt_domain ? g_strdup (gc->priv->nt_domain) : default_domain;
> + }
> +
> /* Extract challenge */
> ldap_error = gc_ldap_result (ldap, op, msgid, &msg);
> if (ldap_error != LDAP_SUCCESS) {
> @@ -279,8 +296,11 @@
> ber_memfree (ldap_buf.bv_val);
>
> /* Create and send response */
> - ba = xntlm_authenticate (nonce, gc->priv->nt_domain ? gc->priv->nt_domain : default_domain,
> - gc->priv->user, gc->priv->password, NULL);
> + ba = xntlm_authenticate (nonce, nt_domain, nt_name, gc->priv->password, NULL);
> + if (nt_domain != default_domain) {
> + g_free (nt_domain);
> + }
> + g_free (nt_name);
> ldap_buf.bv_len = ba->len;
> ldap_buf.bv_val = ba->data;
> ldap_error = ldap_ntlm_bind (ldap, "NTLM", LDAP_AUTH_NTLM_RESPONSE,
> @@ -316,17 +336,35 @@
> int ldap_error;
> #ifndef HAVE_LDAP_NTLM_BIND
> char *nt_name;
> + char *nt_domain;
> + gchar **splitdomain;
> #endif
>
> /* authenticate */
> #ifdef HAVE_LDAP_NTLM_BIND
> ldap_error = ntlm_bind (gc, op, ldap);
> #else
> - nt_name = gc->priv->nt_domain ?
> - g_strdup_printf ("%s\\%s", gc->priv->nt_domain, gc->priv->user) :
> - g_strdup (gc->priv->user);
> +
> + /* If user had to enter user domain instead of domain\user as username,
> + * extract user and domain so authentication will work.
> + */
> + if (g_strrstr (gc->priv->user, "@")) {
> + splitdomain = g_strsplit (gc->priv->user, "@", 2);
> + nt_name = g_strdup (splitdomain[0]);
> + nt_domain = g_strdup (splitdomain[1]);
> + g_strfreev (splitdomain);
> + }
> + else {
> + nt_name = g_strdup (gc->priv->user);
> + nt_domain = g_strdup (gc->priv->nt_domain);
> + }
> +
> + nt_name = nt_domain ?
> + g_strdup_printf ("%s\\%s", nt_domain, nt_name) :
> + g_strdup (nt_name);
> ldap_error = ldap_simple_bind_s (ldap, nt_name, gc->priv->password);
> g_free (nt_name);
> + g_free (nt_domain);
> #endif
> if (ldap_error != LDAP_SUCCESS)
> g_warning ("LDAP authentication failed (0x%02x)", ldap_error);
>
>
> On Tue, 2004-11-30 at 18:20 -0600, John Morris wrote:
> > I've tested with NTLM-compiled connector on exchange 2003 server at
> > work.
> >
> > This is my first patch submission so if I screw something up, please
> > forgive :)
> >
> > John Morris
> > john austin homelinux net
>
> _______________________________________________
> evolution-patches mailing list
> evolution-patches lists ximian com
> http://lists.ximian.com/mailman/listinfo/evolution-patches
>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]