/*
- * chap_ms.c - Challenge Handshake Authentication Protocol.
+ * chap.c - Challenge Handshake Authentication Protocol.
*
- * Copyright (c) 1993 The Australian National University.
- * All rights reserved.
+ * Copyright (c) 1993-2002 Paul Mackerras. All rights reserved.
*
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the Australian National University. The name of the University
- * may not be used to endorse or promote products derived from this
- * software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. The name(s) of the authors of this software must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission.
+ *
+ * 4. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ * "This product includes software developed by Paul Mackerras
+ * <paulus@samba.org>".
+ *
+ * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
+ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS, IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY
+ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
+ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Copyright (c) 1991 Gregory M. Christy.
* All rights reserved.
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
-#define RCSID "$Id: chap.c,v 1.36 2002/10/12 02:30:21 fcusack Exp $"
+#define RCSID "$Id: chap.c,v 1.40 2003/05/12 07:47:06 fcusack Exp $"
/*
* TODO:
"Set max #xmits for challenge", OPT_PRIO },
{ "chap-interval", o_int, &chap[0].chal_interval,
"Set interval for rechallenge", OPT_PRIO },
+#ifdef MSCHAP
#ifdef MSLANMAN
{ "ms-lanman", o_bool, &ms_lanman,
"Use LanMan passwd when using MS-CHAP", 1 },
"specify CHAP challenge" },
{ "mschap2-peer-challenge", o_string, &mschap2_peer_challenge,
"specify CHAP peer challenge" },
+#endif
#endif
{ NULL }
};
UNTIMEOUT(ChapChallengeTimeout, cstate);
- if (len >= sizeof(rhostname))
- len = sizeof(rhostname) - 1;
- BCOPY(inp, rhostname, len);
- rhostname[len] = '\000';
+ /* Null terminate and clean remote name. */
+ slprintf(rhostname, sizeof(rhostname), "%.*v", len, inp);
#ifdef CHAPMS
/* copy the flags into cstate for use elsewhere */
u_char id;
int len;
{
+#ifdef CHAPMS
u_char *msg;
+#endif
u_char *p = inp;
if (cstate->clientstate != CHAPCS_RESPONSE) {
/*
* Print message.
*/
+#ifdef CHAPMS
print_msg:
+#endif
if (len > 0 && p != NULL)
PRINTMSG(p, len);
int code;
{
u_char *outp;
- int i, outlen, msglen;
+ int outlen, msglen;
char msg[256];
char *p, *q;
* Basically, this whole bit is useless code, even the small
* implementation here is only because of overspecification.
*/
+ int i;
+
slprintf(p, q - p, "E=691 R=1 C=");
p += 12;
for (i = 0; i < cstate->chal_len; i++)
slprintf(p, q - p, "I don't like you. Go 'way.");
}
+#ifdef CHAPMS
msgdone:
+#endif
msglen = strlen(msg);
outlen = CHAP_HEADERLEN + msglen;