diff options
author | Caiwen Zhang <caiwen.zhang@windriver.com> | 2011-05-11 17:19:27 +0800 |
---|---|---|
committer | Denis Kenzior <denkenz@gmail.com> | 2011-05-11 20:24:35 -0500 |
commit | 65d65f4fbeaa525e34dc5f0b09e208cc21caa98a (patch) | |
tree | bbd54a328d8f9c5654675763de0f86086f8dde98 /gatchat | |
parent | 543b54a34e2c709c2c4d09a29a0d2676b1bb2c1f (diff) |
gatppp: add name field when using chap auth
Some systems require name field, otherwise chap authentication will
fail.
Diffstat (limited to 'gatchat')
-rw-r--r-- | gatchat/ppp_auth.c | 9 |
1 files changed, 9 insertions, 0 deletions
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); |