Mercurial > pidgin
changeset 31800:a13744df700c
Fix NTLM endianness issue.
Fixes #14163
committer: Ethan Blanton <elb@pidgin.im>
author | jond578@gmail.com |
---|---|
date | Tue, 16 Aug 2011 15:06:48 +0000 |
parents | e972e2161bf5 |
children | 65fc614f11e4 |
files | COPYRIGHT libpurple/ntlm.c |
diffstat | 2 files changed, 9 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/COPYRIGHT Tue Aug 16 15:03:35 2011 +0000 +++ b/COPYRIGHT Tue Aug 16 15:06:48 2011 +0000 @@ -197,6 +197,7 @@ Gustavo Giráldez Richard Gobeille Ian Goldberg +Jon Goldberg Matthew Goldstein Michael Golden Charlie Gordon
--- a/libpurple/ntlm.c Tue Aug 16 15:03:35 2011 +0000 +++ b/libpurple/ntlm.c Tue Aug 16 15:06:48 2011 +0000 @@ -111,14 +111,16 @@ gchar * purple_ntlm_gen_type1(const gchar *hostname, const gchar *domain) { - int hostnamelen; - int domainlen; + int hostnamelen,host_off; + int domainlen,dom_off; unsigned char *msg; struct type1_message *tmsg; gchar *tmp; hostnamelen = strlen(hostname); domainlen = strlen(domain); + host_off = sizeof(struct type1_message); + dom_off = sizeof(struct type1_message) + hostnamelen; msg = g_malloc0(sizeof(struct type1_message) + hostnamelen + domainlen); tmsg = (struct type1_message*)msg; tmsg->protocol[0] = 'N'; @@ -132,11 +134,11 @@ tmsg->type = GUINT32_TO_LE(0x00000001); tmsg->flags = GUINT32_TO_LE(0x0000b203); tmsg->dom_len1 = tmsg->dom_len2 = GUINT16_TO_LE(domainlen); - tmsg->dom_off = GUINT32_TO_LE(sizeof(struct type1_message) + hostnamelen); + tmsg->dom_off = GUINT32_TO_LE(dom_off); tmsg->host_len1 = tmsg->host_len2 = GUINT16_TO_LE(hostnamelen); - tmsg->host_off = GUINT32_TO_LE(sizeof(struct type1_message)); - memcpy(msg + tmsg->host_off, hostname, hostnamelen); - memcpy(msg + tmsg->dom_off, domain, domainlen); + tmsg->host_off = GUINT32_TO_LE(host_off); + memcpy(msg + host_off, hostname, hostnamelen); + memcpy(msg + dom_off, domain, domainlen); tmp = purple_base64_encode(msg, sizeof(struct type1_message) + hostnamelen + domainlen); g_free(msg);