From 65d65f4fbeaa525e34dc5f0b09e208cc21caa98a Mon Sep 17 00:00:00 2001 From: Caiwen Zhang Date: Wed, 11 May 2011 17:19:27 +0800 Subject: [PATCH] gatppp: add name field when using chap auth Some systems require name field, otherwise chap authentication will fail. --- gatchat/ppp_auth.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/gatchat/ppp_auth.c b/gatchat/ppp_auth.c index b73f3204..4ad31a2c 100644 --- a/gatchat/ppp_auth.c +++ b/gatchat/ppp_auth.c @@ -60,6 +60,7 @@ static void chap_process_challenge(struct ppp_chap *chap, const guint8 *packet) struct chap_header *response; GChecksum *checksum; const char *secret = g_at_ppp_get_password(chap->ppp); + const char *username = g_at_ppp_get_username(chap->ppp); guint16 response_length; struct ppp_header *ppp_packet; gsize digest_len; @@ -83,6 +84,10 @@ static void chap_process_challenge(struct ppp_chap *chap, const guint8 *packet) */ digest_len = g_checksum_type_get_length(chap->method); response_length = digest_len + sizeof(*header) + 1; + + if (username != NULL) + response_length += strlen(username); + ppp_packet = ppp_packet_new(response_length, CHAP_PROTOCOL); if (ppp_packet == NULL) goto challenge_out; @@ -98,6 +103,10 @@ static void chap_process_challenge(struct ppp_chap *chap, const guint8 *packet) /* leave the name empty? */ } + if (username != NULL) + memcpy(response->data + digest_len + 1, username, + strlen(username)); + /* transmit the packet */ ppp_transmit(chap->ppp, (guint8 *) ppp_packet, response_length); g_free(ppp_packet);