diff options
author | markm <markm@FreeBSD.org> | 2003-07-16 20:59:15 +0000 |
---|---|---|
committer | markm <markm@FreeBSD.org> | 2003-07-16 20:59:15 +0000 |
commit | d6aec2b6d60b4b7b11a4a51d8a87a963e942803c (patch) | |
tree | d0941cea5c5d555255e1721af0d195e7b1148f6a /lib | |
parent | 23022fa9406006dadd2eafdf36b94c737d737135 (diff) | |
download | FreeBSD-src-d6aec2b6d60b4b7b11a4a51d8a87a963e942803c.zip FreeBSD-src-d6aec2b6d60b4b7b11a4a51d8a87a963e942803c.tar.gz |
Very big makeover in the way telnet, telnetd and libtelnet are built.
Previously, there were two copies of telnet; a non-crypto version
that lived in the usual places, and a crypto version that lived in
crypto/telnet/. The latter was built in a broken manner somewhat akin
to other "contribified" sources. This meant that there were 4 telnets
competing with each other at build time - KerberosIV, Kerberos5,
plain-old-secure and base. KerberosIV is no longer in the running, but
the other three took it in turns to jump all over each other during a
"make buildworld".
As the crypto issue has been clarified, and crypto _calls_ are not
a problem, crypto/telnet has been repo-copied to contrib/telnet,
and with this commit, all telnets are now "contribified". The contrib
path was chosen to not destroy history in the repository, and differs
from other contrib/ entries in that it may be worked on as "normal"
BSD code. There is no dangerous crypto in these sources, only a
very weak system less strong than enigma(1).
Kerberos5 telnet and Secure telnet are now selected by using the usual
macros in /etc/make.conf, and the build process is unsurprising and
less treacherous.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Makefile | 12 | ||||
-rw-r--r-- | lib/libtelnet/Makefile | 36 | ||||
-rw-r--r-- | lib/libtelnet/genget.c | 107 | ||||
-rw-r--r-- | lib/libtelnet/getent.c | 76 | ||||
-rw-r--r-- | lib/libtelnet/misc-proto.h | 80 | ||||
-rw-r--r-- | lib/libtelnet/misc.c | 78 | ||||
-rw-r--r-- | lib/libtelnet/misc.h | 42 |
7 files changed, 19 insertions, 412 deletions
diff --git a/lib/Makefile b/lib/Makefile index ab5ae75..1f6ca1b 100644 --- a/lib/Makefile +++ b/lib/Makefile @@ -5,8 +5,8 @@ # built are visible: # # csu must be built before all shared libaries for ELF. -# libcom_err must be built before libkrb and libpam. -# libcrypt must be built before libkrb and libpam. +# libcom_err must be built before libkrb5 and libpam. +# libcrypt must be built before libkrb5 and libpam. # libkvm must be built before libdevstat. # msun must be built before libg++ and libstdc++. # libmd must be built before libatm, libopie, libradius, and libtacplus. @@ -29,7 +29,7 @@ SUBDIR= ${_csu} libcom_err libcrypt libkvm msun libmd \ libipx libisc libmenu ${_libmilter} ${_libmp} ${_libncp} \ libnetgraph libopie libpam libpanel libpcap ${_libpthread} \ ${_libsm} ${_libsmb} ${_libsmdb} ${_libsmutil} \ - libstand ${_libtelnet} ${_libthr} libufs libugidfw libusbhid \ + libstand libtelnet ${_libthr} libufs libugidfw libusbhid \ ${_libvgl} libwrap libxpg4 liby libz .if exists(${.CURDIR}/csu/${MACHINE_ARCH}-elf) @@ -89,12 +89,6 @@ _compat= compat _libdisk= libdisk .endif -.if defined(RELEASEDIR) || \ - (!exists(${.CURDIR}/../secure) && !exists(${.CURDIR}/../kerberos5)) || \ - defined(NOCRYPT) || defined(NO_OPENSSL) || defined(NO_KERBEROS) -_libtelnet= libtelnet -.endif - .if exists(${.CURDIR}/../crypto) && !defined(NOCRYPT) && !defined(NO_OPENSSL) _libmp= libmp .endif diff --git a/lib/libtelnet/Makefile b/lib/libtelnet/Makefile index 542a261..4ee31fb 100644 --- a/lib/libtelnet/Makefile +++ b/lib/libtelnet/Makefile @@ -1,33 +1,29 @@ # From: @(#)Makefile 8.2 (Berkeley) 12/15/93 # $FreeBSD$ +TELNETDIR= ${.CURDIR}/../../contrib/telnet +.PATH: ${TELNETDIR}/libtelnet + LIB= telnet INTERNALLIB= yes SRCS= genget.c getent.c misc.c +CFLAGS+= -I${TELNETDIR} WARNS?= 2 -unifdef: - -cd ${.CURDIR} ; \ - ( for i in *.[ch] ; do \ - unifdef -UAUTHENTICATION -UENCRYPTION \ - ${.CURDIR}/../../crypto/telnet/libtelnet/$$i \ - > ${.CURDIR}/$$i ; \ - echo $$i ; \ - done ) +.if !defined(NO_CRYPTO) +SRCS+= encrypt.c auth.c enc_des.c sra.c pk.c +CFLAGS+= -DENCRYPTION -DAUTHENTICATION -DSRA +.if !defined(NO_KERBEROS) +SRCS+= kerberos5.c +CFLAGS+= -DKRB5 -I${KRB5DIR}/lib/krb5 -I${KRB5OBJDIR} -I${ASN1OBJDIR} +CFLAGS+= -DFORWARD -Dnet_write=telnet_net_write +.endif +.endif + +INCS= ${TELNETDIR}/arpa/telnet.h +INCSDIR= ${INCLUDEDIR}/arpa .include <bsd.lib.mk> - -# -# Remove obsolete shared libraries, if any. We don't bother moving them -# to /usr/lib/compat, since they were only used by telnet, telnetd and -# tn3270. -# -beforeinstall: __remove-stale-libs -__remove-stale-libs: .PHONY -.if exists(${DESTDIR}${SHLIBDIR}/lib${LIB}.so.2.0) - -chflags noschg ${DESTDIR}${SHLIBDIR}/lib${LIB}.so.2.0 - rm -f ${DESTDIR}${SHLIBDIR}/lib${LIB}.so.2.0 -.endif diff --git a/lib/libtelnet/genget.c b/lib/libtelnet/genget.c deleted file mode 100644 index e24bb44..0000000 --- a/lib/libtelnet/genget.c +++ /dev/null @@ -1,107 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> - -__FBSDID("$FreeBSD$"); - -#ifndef lint -#if 0 -static const char sccsid[] = "@(#)genget.c 8.2 (Berkeley) 5/30/95"; -#endif -#endif /* not lint */ - - -#include <ctype.h> - -#include "misc-proto.h" - -#define LOWER(x) (isupper(x) ? tolower(x) : (x)) -/* - * The prefix function returns 0 if *s1 is not a prefix - * of *s2. If *s1 exactly matches *s2, the negative of - * the length is returned. If *s1 is a prefix of *s2, - * the length of *s1 is returned. - */ -int -isprefix(char *s1, const char *s2) -{ - char *os1; - char c1, c2; - - if (*s1 == '\0') - return(-1); - os1 = s1; - c1 = *s1; - c2 = *s2; - while (LOWER(c1) == LOWER(c2)) { - if (c1 == '\0') - break; - c1 = *++s1; - c2 = *++s2; - } - return(*s1 ? 0 : (*s2 ? (s1 - os1) : (os1 - s1))); -} - -static char *ambiguous; /* special return value for command routines */ - -char ** -genget(char *name, char **table, int stlen) -{ - char **c, **found; - int n; - - if (name == 0) - return 0; - - found = 0; - for (c = table; *c != 0; c = (char **)((char *)c + stlen)) { - if ((n = isprefix(name, *c)) == 0) - continue; - if (n < 0) /* exact match */ - return(c); - if (found) - return(&ambiguous); - found = c; - } - return(found); -} - -/* - * Function call version of Ambiguous() - */ -int -Ambiguous(char **s) -{ - return(s == &ambiguous); -} diff --git a/lib/libtelnet/getent.c b/lib/libtelnet/getent.c deleted file mode 100644 index d6e8d9c..0000000 --- a/lib/libtelnet/getent.c +++ /dev/null @@ -1,76 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> - -__FBSDID("$FreeBSD$"); - -#ifndef lint -#if 0 -static char sccsid[] = "@(#)getent.c 8.2 (Berkeley) 12/15/93"; -#endif -#endif /* not lint */ - -#include <stdlib.h> -#include <string.h> - -#include "misc-proto.h" - -static char *area; -static char gettytab[] = "/etc/gettytab"; - -/*ARGSUSED*/ -int -getent(char *cp __unused, const char *name) -{ - int retval; - char *tempnam, *dba[2] = { gettytab, NULL }; - - tempnam = strdup(name); - retval = cgetent(&area, dba, tempnam) == 0 ? 1 : 0; - free(tempnam); - return(retval); -} - -/*ARGSUSED*/ -char * -Getstr(const char *id, char **cpp __unused) -{ - int retval; - char *answer, *tempid; - - tempid = strdup(id); - retval = cgetstr(area, tempid, &answer); - free(tempid); - return((retval > 0) ? answer : NULL); -} diff --git a/lib/libtelnet/misc-proto.h b/lib/libtelnet/misc-proto.h deleted file mode 100644 index aea753c..0000000 --- a/lib/libtelnet/misc-proto.h +++ /dev/null @@ -1,80 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)misc-proto.h 8.1 (Berkeley) 6/4/93 - * $FreeBSD$ - */ - -/* - * Copyright (C) 1990 by the Massachusetts Institute of Technology - * - * Export of this software from the United States of America is assumed - * to require a specific license from the United States Government. - * It is the responsibility of any person or organization contemplating - * export to obtain such a license before exporting. - * - * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and - * distribute this software and its documentation for any purpose and - * without fee is hereby granted, provided that the above copyright - * notice appear in all copies and that both that copyright notice and - * this permission notice appear in supporting documentation, and that - * the name of M.I.T. not be used in advertising or publicity pertaining - * to distribution of the software without specific, written prior - * permission. M.I.T. makes no representations about the suitability of - * this software for any purpose. It is provided "as is" without express - * or implied warranty. - */ - -#ifndef __MISC_PROTO__ -#define __MISC_PROTO__ - -void auth_encrypt_init(char *, char *, const char *, int); -void auth_encrypt_connect(int); -void printd(const unsigned char *, int); - -int isprefix(char *, const char *); -char **genget(char *, char **, int); -int Ambiguous(char **); - -int getent(char *, const char *); -char *Getstr(const char *, char **); - -/* - * These functions are imported from the application - */ -int net_write(unsigned char *, int); -void net_encrypt(void); -int telnet_spin(void); -char *telnet_getenv(char *); -char *telnet_gets(const char *, char *, int, int); -void printsub(char, unsigned char *, int); -#endif diff --git a/lib/libtelnet/misc.c b/lib/libtelnet/misc.c deleted file mode 100644 index 981208e..0000000 --- a/lib/libtelnet/misc.c +++ /dev/null @@ -1,78 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#include <sys/cdefs.h> - -__FBSDID("$FreeBSD$"); - -#ifndef lint -#if 0 -static const char sccsid[] = "@(#)misc.c 8.1 (Berkeley) 6/4/93"; -#endif -#endif /* not lint */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include "misc.h" - -char *RemoteHostName; -char *LocalHostName; -char *UserNameRequested = 0; -int ConnectedCount = 0; - -#define undef1 __unused - -void -auth_encrypt_init(char *local, char *remote, const char *name undef1, int server undef1) -{ - RemoteHostName = remote; - LocalHostName = local; - if (UserNameRequested) { - free(UserNameRequested); - UserNameRequested = 0; - } -} - - -void -printd(const unsigned char *data, int cnt) -{ - if (cnt > 16) - cnt = 16; - while (cnt-- > 0) { - printf(" %02x", *data); - ++data; - } -} diff --git a/lib/libtelnet/misc.h b/lib/libtelnet/misc.h deleted file mode 100644 index 41ffa7f..0000000 --- a/lib/libtelnet/misc.h +++ /dev/null @@ -1,42 +0,0 @@ -/*- - * Copyright (c) 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)misc.h 8.1 (Berkeley) 6/4/93 - */ - -extern char *UserNameRequested; -extern char *LocalHostName; -extern char *RemoteHostName; -extern int ConnectedCount; -extern int ReservedPort; - -#include "misc-proto.h" |