---- funcs.c.dist Mon May 13 00:37:37 1996
-+++ funcs.c Mon May 13 00:58:33 1996
-@@ -830,11 +830,12 @@
- /* reply.*/
-
- {
-- VALUE_PAIR *item;
-+ VALUE_PAIR *item, *chall;
- u_char buffer[AUTH_PASS_LEN + AUTH_VECTOR_LEN + 1];
- int i;
- int secretlen;
- int result;
-+ int chall_len;
- u_char digest[CHAP_VALUE_LENGTH];
- u_char *ptr;
- char *crypt ();
-@@ -896,10 +897,21 @@
-
- secretlen = strlen ((char *) ptr);
- ptr += secretlen;
-- memcpy ((char *) ptr, (char *) authreq->vector,
-- AUTH_VECTOR_LEN);
-+
-+ /* this uses CHAP-Challenge as the challenge if it exists */
-+ /* lf, 5/13/96 */
-+ if ((chall = get_vp (authreq->request, PW_CHAP_CHALLENGE))
-+ != (VALUE_PAIR *) NULL) {
-+ memcpy ((char *) ptr, chall->strvalue, chall->lvalue);
-+ chall_len = chall->lvalue;
-+ } else {
-+ memcpy ((char *) ptr, (char *) authreq->vector,
-+ AUTH_VECTOR_LEN);
-+ chall_len = AUTH_VECTOR_LEN;
-+ }
-+
- md5_calc (digest, buffer,
-- 1 + CHAP_VALUE_LENGTH + secretlen);
-+ 1 + chall_len + secretlen);
- /* Compare them */
- if ((result = memcmp ((char *) digest, item->strvalue + 1,
- CHAP_VALUE_LENGTH)) != 0)