]> git.ozlabs.org Git - ppp.git/blob - pppd/plugins/radius/radiusclient/patches/merit-2.4.21-CHAP.diff
Added RADIUS suppport.
[ppp.git] / pppd / plugins / radius / radiusclient / patches / merit-2.4.21-CHAP.diff
1 --- funcs.c.dist        Mon May 13 00:37:37 1996
2 +++ funcs.c     Mon May 13 00:58:33 1996
3 @@ -830,11 +830,12 @@
4                                 /* reply.*/
5  
6  {
7 -       VALUE_PAIR     *item;
8 +       VALUE_PAIR     *item, *chall;
9         u_char          buffer[AUTH_PASS_LEN + AUTH_VECTOR_LEN + 1];
10         int             i;
11         int             secretlen;
12         int             result;
13 +       int             chall_len;
14         u_char          digest[CHAP_VALUE_LENGTH];
15         u_char         *ptr;
16         char           *crypt ();
17 @@ -896,10 +897,21 @@
18  
19                 secretlen = strlen ((char *) ptr);
20                 ptr += secretlen;
21 -               memcpy ((char *) ptr, (char *) authreq->vector,
22 -                       AUTH_VECTOR_LEN);
23 +
24 +               /* this uses CHAP-Challenge as the challenge if it exists */
25 +               /* lf, 5/13/96 */
26 +               if ((chall = get_vp (authreq->request, PW_CHAP_CHALLENGE))
27 +                       != (VALUE_PAIR *) NULL) {
28 +                       memcpy ((char *) ptr, chall->strvalue, chall->lvalue);  
29 +                       chall_len = chall->lvalue;
30 +               } else {
31 +                       memcpy ((char *) ptr, (char *) authreq->vector,
32 +                               AUTH_VECTOR_LEN);
33 +                       chall_len = AUTH_VECTOR_LEN;
34 +               }       
35 +               
36                 md5_calc (digest, buffer,
37 -                         1 + CHAP_VALUE_LENGTH + secretlen);
38 +                         1 + chall_len + secretlen);
39                 /* Compare them */
40                 if ((result = memcmp ((char *) digest, item->strvalue + 1,
41                                       CHAP_VALUE_LENGTH)) != 0)