80238a2
Port of fixes originally made to the NetKit telnet client.
80238a2
80238a2
Previous behavior:
80238a2
  Well-defined or exported variables are sent to the server on initial connect.
80238a2
  The "environ list" command prints "*" before these variable names.
80238a2
  Other variables are sent to the server if it requests them.
80238a2
  The "environ list" command prints " " before these variable names.
80238a2
New behavior:
80238a2
  Well-defined variables are sent to the server on initial connect.
80238a2
  The "environ list" command prints "*" before these variable names.
80238a2
  Exported variables are sent to the server on initial connect.
80238a2
  The "environ list" command prints "+" before these variable names.
80238a2
  Other variables are NOT sent to the server.
80238a2
  The "environ list" command prints " " before these variable names.
80238a2
80238a2
diff -uNr krb5-1.4.1/src/appl/telnet/telnet/authenc.c krb5-1.4.1/src/appl/telnet/telnet/authenc.c
80238a2
--- krb5-1.4.1/src/appl/telnet/telnet/authenc.c	2002-11-15 15:21:34.000000000 -0500
80238a2
+++ krb5-1.4.1/src/appl/telnet/telnet/authenc.c	2005-06-29 21:06:39.000000000 -0400
80238a2
@@ -83,13 +83,6 @@
80238a2
 }
80238a2
 
80238a2
 	char *
80238a2
-telnet_getenv(val)
80238a2
-	char *val;
80238a2
-{
80238a2
-	return((char *)env_getvalue((unsigned char *)val));
80238a2
-}
80238a2
-
80238a2
-	char *
80238a2
 telnet_gets(tprompt, result, length, echo)
80238a2
 	char *tprompt;
80238a2
 	char *result;
80238a2
diff -uNr krb5-1.4.1/src/appl/telnet/telnet/commands.c krb5-1.4.1/src/appl/telnet/telnet/commands.c
80238a2
--- krb5-1.4.1/src/appl/telnet/telnet/commands.c	2005-04-07 17:17:26.000000000 -0400
80238a2
+++ krb5-1.4.1/src/appl/telnet/telnet/commands.c	2005-06-29 21:11:34.000000000 -0400
80238a2
@@ -1889,8 +1889,9 @@
80238a2
 	register struct env_lst *ep;
80238a2
 
80238a2
 	for (ep = envlisthead.next; ep; ep = ep->next) {
80238a2
-		printf("%c %-20s %s\r\n", ep->export ? '*' : ' ',
80238a2
-					ep->var, ep->value);
80238a2
+		printf("%c %-20s %s\r\n",
80238a2
+		       " +*"[(ep->welldefined ? 2 : (ep->export > 0))],
80238a2
+		       ep->var, ep->value);
80238a2
 	}
80238a2
 }
80238a2
 
80238a2
@@ -1914,13 +1915,15 @@
80238a2
 }
80238a2
 
80238a2
 	unsigned char *
80238a2
-env_getvalue(var)
80238a2
+env_getvalue(var, export_only)
80238a2
 	unsigned char *var;
80238a2
+	int export_only;
80238a2
 {
80238a2
 	register struct env_lst *ep;
80238a2
 
80238a2
 	if ((ep = env_find(var)))
80238a2
-		return(ep->value);
80238a2
+		if (ep->export || !export_only)
80238a2
+			return(ep->value);
80238a2
 	return(NULL);
80238a2
 }
80238a2
 
80238a2
diff -uNr krb5-1.4.1/src/appl/telnet/telnet/externs.h krb5-1.4.1/src/appl/telnet/telnet/externs.h
80238a2
--- krb5-1.4.1/src/appl/telnet/telnet/externs.h	2003-04-23 23:27:56.000000000 -0400
80238a2
+++ krb5-1.4.1/src/appl/telnet/telnet/externs.h	2005-06-29 21:05:16.000000000 -0400
80238a2
@@ -347,7 +347,7 @@
80238a2
 
80238a2
 extern unsigned char
80238a2
     *env_default (int, int),
80238a2
-    *env_getvalue (unsigned char *);
80238a2
+    *env_getvalue (unsigned char *, int);
80238a2
 
80238a2
 extern int
80238a2
     env_is_exported (unsigned char *);
80238a2
diff -uNr krb5-1.4.1/src/appl/telnet/telnet/telnet.c krb5-1.4.1/src/appl/telnet/telnet/telnet.c
80238a2
--- krb5-1.4.1/src/appl/telnet/telnet/telnet.c	2005-06-29 21:13:29.000000000 -0400
80238a2
+++ krb5-1.4.1/src/appl/telnet/telnet/telnet.c	2005-06-29 21:09:13.000000000 -0400
80238a2
@@ -552,7 +552,7 @@
80238a2
 #endif
80238a2
 
80238a2
 	    case TELOPT_XDISPLOC:	/* X Display location */
80238a2
-		if (env_getvalue((unsigned char *)"DISPLAY") &&
80238a2
+		if (env_getvalue((unsigned char *)"DISPLAY", 0) &&
80238a2
 		    env_is_exported((unsigned char *)"DISPLAY"))
80238a2
 		    new_state_ok = 1;
80238a2
 		break;
80238a2
@@ -813,7 +813,7 @@
80238a2
 		resettermname = 0;
80238a2
 		if (tnamep && tnamep != unknown)
80238a2
 			free(tnamep);
80238a2
-		if ((tname = (char *)env_getvalue((unsigned char *)"TERM")) &&
80238a2
+		if ((tname = (char *)env_getvalue((unsigned char *)"TERM", 0)) &&
80238a2
 				(setupterm(tname, 1, &err) == 0)) {
80238a2
 			tnamep = mklist(termbuf, tname);
80238a2
 		} else {
80238a2
@@ -988,7 +988,7 @@
80238a2
 	    unsigned char temp[50], *dp;
80238a2
 	    int len;
80238a2
 
80238a2
-	    if (((dp = env_getvalue((unsigned char *)"DISPLAY")) == NULL) ||
80238a2
+	    if (((dp = env_getvalue((unsigned char *)"DISPLAY", 0)) == NULL) ||
80238a2
 		(! env_is_exported((unsigned char *)"DISPLAY"))) {
80238a2
 		/*
80238a2
 		 * Something happened, we no longer have a DISPLAY
80238a2
@@ -1669,7 +1669,7 @@
80238a2
 			env_opt_add(ep);
80238a2
 		return;
80238a2
 	}
80238a2
-	vp = env_getvalue(ep);
80238a2
+	vp = env_getvalue(ep, 1);
80238a2
 	elen = 2 * (vp ? strlen((char *)vp) : 0) +
80238a2
 		2 * strlen((char *)ep) + 6;
80238a2
 	if ((opt_replyend - opt_replyp) < elen)
80238a2
@@ -2327,7 +2327,7 @@
80238a2
 	send_will(TELOPT_LINEMODE, 1);
80238a2
 	send_will(TELOPT_NEW_ENVIRON, 1);
80238a2
 	send_do(TELOPT_STATUS, 1);
80238a2
-	if (env_getvalue((unsigned char *)"DISPLAY") &&
80238a2
+	if (env_getvalue((unsigned char *)"DISPLAY", 0) &&
80238a2
 	    env_is_exported((unsigned char *)"DISPLAY"))
80238a2
 	    send_will(TELOPT_XDISPLOC, 1);
80238a2
 	if (eight)
80238a2
--- krb5-1.4.1/src/appl/telnet/telnetd/authenc.c	2005-06-29 21:25:09.000000000 -0400
80238a2
+++ krb5-1.4.1/src/appl/telnet/telnetd/authenc.c	2005-06-29 21:25:13.000000000 -0400
80238a2
@@ -67,14 +67,6 @@
80238a2
 }
80238a2
 
80238a2
 	char *
80238a2
-telnet_getenv(val)
80238a2
-	char *val;
80238a2
-{
80238a2
-	extern char *getenv();
80238a2
-	return(getenv(val));
80238a2
-}
80238a2
-
80238a2
-	char *
80238a2
 telnet_gets(prompt, result, length, echo)
80238a2
 	char *prompt;
80238a2
 	char *result;
80238a2
--- krb5-1.4.1/src/appl/telnet/telnet/telnet.1	2005-06-29 21:26:55.000000000 -0400
80238a2
+++ krb5-1.4.1/src/appl/telnet/telnet/telnet.1	2005-06-29 21:29:05.000000000 -0400
80238a2
@@ -401,7 +401,7 @@
80238a2
 .I variable
80238a2
 to have a value of
80238a2
 .IR value .
80238a2
-Any variables defined by this command are automatically exported.  The
80238a2
+Variables defined by this command are not automatically exported.  The
80238a2
 .I value
80238a2
 may be enclosed in single or double quotes so that tabs and spaces may
80238a2
 be included.
80238a2
@@ -423,8 +423,8 @@
80238a2
 .TP
80238a2
 .B list
80238a2
 List the current set of environment variables.  Those marked with a \&*
80238a2
-will be sent automatically; other variables will only be sent if
80238a2
-explicitly requested.
80238a2
+will be sent automatically; those marked with a \&+ will be sent if the
80238a2
+other end requests their values, and other variables will not be sent.
80238a2
 .TP
80238a2
 .B \&?
80238a2
 Prints out help information for the