From b1fce0a864ba998d484b3bbb09d8a552ec1e030f Mon Sep 17 00:00:00 2001 From: Unknown User d91-jda Date: Sat, 21 Oct 1995 19:54:39 +0000 Subject: [PATCH] Import some changes from telnet.95.10.19. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@170 ec53bebd-3082-4978-b11e-865c3cabbd6b --- appl/telnet/telnetd/sys_term.c | 68 ++++++++++++++-------------------- 1 file changed, 28 insertions(+), 40 deletions(-) diff --git a/appl/telnet/telnetd/sys_term.c b/appl/telnet/telnetd/sys_term.c index 00241c649..0044624b3 100644 --- a/appl/telnet/telnetd/sys_term.c +++ b/appl/telnet/telnetd/sys_term.c @@ -1555,12 +1555,27 @@ init_env() #ifndef NEWINIT /* - * start_login(host) + * scrub_env() * - * Assuming that we are now running as a child processes, this - * function will turn us into the login process. + * Remove a few things from the environment that + * don't need to be there. */ +static void scrub_env(void) +{ + char **cpp, **cpp2; + + for (cpp2 = cpp = environ; *cpp; cpp++) { + if (!strncmp(*cpp, "LD_", 3) && + !strncmp(*cpp, "_RLD_", 5) && + !strncmp(*cpp, "LIBPATH=", 8) && + !strncmp(*cpp, "IFS=", 4)) + *cpp2++ = *cpp; + } + *cpp2 = 0; +} + + struct arg_val { int size; int argc; @@ -1569,8 +1584,14 @@ struct arg_val { int addarg(struct arg_val*, char*); - void -start_login(host, autologin, name) +/* + * start_login(host) + * + * Assuming that we are now running as a child processes, this + * function will turn us into the login process. + */ + +void start_login(host, autologin, name) char *host; int autologin; char *name; @@ -1612,6 +1633,8 @@ start_login(host, autologin, name) fatal(net, "pututxline failed"); #endif + scrub_env(); + /* * -h : pass on name of host. * WARNING: -h is accepted by login if and only if @@ -1853,41 +1876,6 @@ int addarg(struct arg_val *argv, char *val) return 0; } -#if 0 /* Ick!! */ - -char ** -addarg(argv, val) - register char **argv; - register char *val; -{ - register char **cpp; - - if (argv == NULL) { - /* - * 10 entries, a leading length, and a null - */ - argv = (char **)malloc(sizeof(*argv) * 12); - if (argv == NULL) - return(NULL); - *argv++ = (char *)10; - *argv = (char *)0; - } - for (cpp = argv; *cpp; cpp++) - ; - if (cpp == &argv[(int)argv[-1]]) { - --argv; - *argv = (char *)((int)(*argv) + 10); - argv = (char **)realloc(argv, sizeof(*argv)*((int)(*argv) + 2)); - if (argv == NULL) - return(NULL); - argv++; - cpp = &argv[(int)argv[-1] - 10]; - } - *cpp++ = val; - *cpp = 0; - return(argv); -} -#endif /* 0 */ #endif /* NEWINIT */