Module Name: src Committed By: christos Date: Mon Jan 9 16:08:56 UTC 2012
Modified Files: src/usr.bin/telnet: Makefile authenc.c commands.c externs.h main.c sys_bsd.c telnet.c utilities.c Log Message: PR/45805: Borodin Oleg: telnet/telnetd with -DAUTHENTICATION -DENCRYPTION (rfc2941) - Minimal diffs to separate MKCRYPTO from USE_KERBEROS To generate a diff of this commit: cvs rdiff -u -r1.48 -r1.49 src/usr.bin/telnet/Makefile cvs rdiff -u -r1.12 -r1.13 src/usr.bin/telnet/authenc.c cvs rdiff -u -r1.67 -r1.68 src/usr.bin/telnet/commands.c cvs rdiff -u -r1.35 -r1.36 src/usr.bin/telnet/externs.h cvs rdiff -u -r1.27 -r1.28 src/usr.bin/telnet/main.c cvs rdiff -u -r1.32 -r1.33 src/usr.bin/telnet/sys_bsd.c cvs rdiff -u -r1.34 -r1.35 src/usr.bin/telnet/telnet.c cvs rdiff -u -r1.22 -r1.23 src/usr.bin/telnet/utilities.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/telnet/Makefile diff -u src/usr.bin/telnet/Makefile:1.48 src/usr.bin/telnet/Makefile:1.49 --- src/usr.bin/telnet/Makefile:1.48 Wed Oct 5 06:48:54 2011 +++ src/usr.bin/telnet/Makefile Mon Jan 9 11:08:55 2012 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile,v 1.48 2011/10/05 10:48:54 roy Exp $ +# $NetBSD: Makefile,v 1.49 2012/01/09 16:08:55 christos Exp $ # # Copyright (c) 1990 The Regents of the University of California. # All rights reserved. @@ -34,7 +34,7 @@ # from: @(#)Makefile 8.1 (Berkeley) 6/6/93 # -WARNS?= 1 # XXX -Wshadow etc. fix asap +WARNS?= 4 # XXX -Wshadow etc. fix asap CWARNFLAGS.clang+= -Wno-tautological-compare -Wno-format-security .include <bsd.own.mk> @@ -64,19 +64,22 @@ CPPFLAGS+=-DINET6 LIBTELNETDIR!= cd ${.CURDIR}/../../lib/libtelnet; ${PRINTOBJDIR} .if (${USE_KERBEROS} != "no") -CPPFLAGS+=-DKRB5 -DFORWARD -DAUTHENTICATION -DENCRYPTION -LDADD+= -lkrb5 -lasn1 -lcrypto -lcrypt -DPADD+= ${LIBKRB5} ${LIBASN1} ${LIBCRYPTO} ${LIBCRYPT} +CPPFLAGS+=-DKRB5 -DFORWARD +LDADD+= -lkrb5 -lasn1 -lcom_err -lroken +DPADD+= ${LIBKRB5} ${LIBASN1} ${LIBCOM_ERR} ${LIBROKEN} +.endif + +.if (${MKCRYPTO} != "no") +CPPFLAGS+=-DAUTHENTICATION -DENCRYPTION +LDADD+= -ldes -lcrypto -lcrypt +DPADD+= ${LIBDES} ${LIBCRYPTO} ${LIBCRYPT} +.endif .if (${USE_PAM} != "no") LDADD+= -lpam ${PAM_STATIC_LDADD} DPADD+= ${LIBPAM} ${PAM_STATIC_DPADD} .endif -LDADD+= -ldes -lcom_err -lroken -DPADD+= ${LIBDES} ${LIBCOM_ERR} ${LIBROKEN} -.endif - .if defined(HAVE_GCC) || defined(HAVE_PCC) .for f in commands telnet terminal utilities COPTS.${f}.c+= -Wno-pointer-sign Index: src/usr.bin/telnet/authenc.c diff -u src/usr.bin/telnet/authenc.c:1.12 src/usr.bin/telnet/authenc.c:1.13 --- src/usr.bin/telnet/authenc.c:1.12 Thu Aug 7 07:16:07 2003 +++ src/usr.bin/telnet/authenc.c Mon Jan 9 11:08:55 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: authenc.c,v 1.12 2003/08/07 11:16:07 agc Exp $ */ +/* $NetBSD: authenc.c,v 1.13 2012/01/09 16:08:55 christos Exp $ */ /*- * Copyright (c) 1991, 1993 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "@(#)authenc.c 8.1 (Berkeley) 6/6/93"; #else -__RCSID("$NetBSD: authenc.c,v 1.12 2003/08/07 11:16:07 agc Exp $"); +__RCSID("$NetBSD: authenc.c,v 1.13 2012/01/09 16:08:55 christos Exp $"); #endif #endif /* not lint */ @@ -87,7 +87,7 @@ telnet_getenv(char *val) } char * -telnet_gets(char *prompt, char *result, int length, int echo) +telnet_gets(char *prmpt, char *result, int length, int echo) { extern int globalmode; int om = globalmode; @@ -95,9 +95,9 @@ telnet_gets(char *prompt, char *result, TerminalNewMode(-1); if (echo) { - printf("%s", prompt); + printf("%s", prmpt); res = fgets(result, length, stdin); - } else if ((res = getpass(prompt)) != NULL) { + } else if ((res = getpass(prmpt)) != NULL) { strlcpy(result, res, length); res = result; } Index: src/usr.bin/telnet/commands.c diff -u src/usr.bin/telnet/commands.c:1.67 src/usr.bin/telnet/commands.c:1.68 --- src/usr.bin/telnet/commands.c:1.67 Mon Dec 18 09:18:40 2006 +++ src/usr.bin/telnet/commands.c Mon Jan 9 11:08:55 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: commands.c,v 1.67 2006/12/18 14:18:40 christos Exp $ */ +/* $NetBSD: commands.c,v 1.68 2012/01/09 16:08:55 christos Exp $ */ /* * Copyright (C) 1997 and 1998 WIDE Project. @@ -63,7 +63,7 @@ #if 0 static char sccsid[] = "@(#)commands.c 8.4 (Berkeley) 5/30/95"; #else -__RCSID("$NetBSD: commands.c,v 1.67 2006/12/18 14:18:40 christos Exp $"); +__RCSID("$NetBSD: commands.c,v 1.68 2012/01/09 16:08:55 christos Exp $"); #endif #endif /* not lint */ @@ -109,8 +109,8 @@ char *hostname; static char _hostname[MAXHOSTNAMELEN]; typedef struct { - char *name; /* command name */ - char *help; /* help string (NULL for no help) */ + const char *name; /* command name */ + const char *help; /* help string (NULL for no help) */ int (*handler) /* routine which executes command */ (int, char *[]); int needconnect; /* Do we need to be connected to execute? */ @@ -123,7 +123,7 @@ static char *margv[20]; static void makeargv(void); static int special(char *); -static char *control(cc_t); +static const char *control(cc_t); static int sendcmd(int, char **); static int send_esc(char *); static int send_docmd(char *); @@ -155,7 +155,7 @@ static int bye(int, char *[]); static void slc_help(int); static struct slclist *getslc(char *); static int slccmd(int, char *[]); -static struct env_lst *env_help(unsigned char *, unsigned char *); +static struct env_lst *env_help(const unsigned char *, unsigned char *); static struct envlist *getenvcmd(char *); #ifdef AUTHENTICATION static int auth_help(char *); @@ -175,12 +175,13 @@ makeargv(void) { char *cp, *cp2, c; char **argp = margv; + static char bang[] = "!"; margc = 0; cp = line; if (*cp == '!') { /* Special case shell escape */ strlcpy(saveline, line, sizeof(saveline)); /* save for shell command */ - *argp++ = "!"; /* No room in string to get this */ + *argp++ = bang; /* No room in string to get this */ margc++; cp++; } @@ -253,7 +254,7 @@ special(char *s) * Construct a control character sequence * for a special character. */ -static char * +static const char * control(cc_t c) { static char buf[5]; @@ -297,8 +298,8 @@ control(cc_t c) */ struct sendlist { - char *name; /* How user refers to it (case independent) */ - char *help; /* Help information (0 ==> no help) */ + const char *name; /* How user refers to it (case independent) */ + const char *help; /* Help information (0 ==> no help) */ int needconnect; /* Need to be connected */ int narg; /* Number of arguments */ int (*handler) /* Routine to perform (for special ops) */ @@ -334,7 +335,7 @@ static struct sendlist Sendlist[] = { { "dont", 0, 0, 1, send_dontcmd, 3, 0 }, { "will", 0, 0, 1, send_willcmd, 3, 0 }, { "wont", 0, 0, 1, send_wontcmd, 3, 0 }, - { 0 } + { .name = 0 } }; #define GETSEND(name) ((struct sendlist *) genget(name, (char **) Sendlist, \ @@ -450,7 +451,7 @@ send_wontcmd(char *name) } int -send_tncmd(void (*func)(int, int), char *cmd, char *name) +send_tncmd(void (*func)(int, int), const char *cmd, char *name) { const char **cpp; int val = 0; @@ -475,7 +476,7 @@ send_tncmd(void (*func)(int, int), char printf("\n"); return 0; } - cpp = (const char **)genget(name, (char **)telopts, sizeof(char *)); + cpp = (void *)genget(name, __UNCONST(telopts), sizeof(char *)); if (Ambiguous(cpp)) { fprintf(stderr,"'%s': ambiguous argument ('send %s ?' for help).\n", name, cmd); @@ -653,12 +654,12 @@ extern int EncryptVerbose(int); #endif /* ENCRYPTION */ struct togglelist { - char *name; /* name of toggle */ - char *help; /* help message */ + const char *name; /* name of toggle */ + const char *help; /* help message */ int (*handler) /* routine to do actual setting */ (int); int *variable; - char *actionexplanation; + const char *actionexplanation; }; static struct togglelist Togglelist[] = { @@ -741,7 +742,7 @@ static struct togglelist Togglelist[] = lclchars, &localchars, "recognize certain control characters" }, - { " ", "", 0 }, /* empty line */ + { " ", "", 0, NULL, NULL }, /* empty line */ #ifdef TN3270 { "apitrace", "(debugging) toggle tracing of API transactions", @@ -781,11 +782,11 @@ static struct togglelist Togglelist[] = "print hexadecimal representation of terminal traffic" }, { "?", 0, - togglehelp }, + togglehelp, NULL, NULL }, { "help", 0, - togglehelp }, - { 0 } + togglehelp, NULL, NULL }, + { .name = 0 } }; static int @@ -870,11 +871,11 @@ toggle(int argc, char *argv[]) * The following perform the "set" command. */ -struct termios new_tc = { 0 }; +struct termios new_tc = { .c_iflag = 0 }; struct setlist { - char *name; /* name */ - char *help; /* help information */ + const char *name; /* name */ + const char *help; /* help information */ void (*handler)(char *); cc_t *charp; /* where it is located at */ }; @@ -886,13 +887,13 @@ static struct setlist Setlist[] = { { "escape", "character to escape back to telnet command mode", 0, &escape }, { "rlogin", "rlogin escape character", 0, &rlogin }, { "tracefile", "file to write trace information to", SetNetTrace, (cc_t *)NetTraceFile}, - { " ", "" }, + { " ", "", NULL, NULL }, { " ", "The following need 'localchars' to be toggled true", 0, 0 }, { "flushoutput", "character to cause an Abort Output", 0, termFlushCharp }, { "interrupt", "character to cause an Interrupt Process", 0, termIntCharp }, { "quit", "character to cause an Abort process", 0, termQuitCharp }, { "eof", "character to cause an EOF ", 0, termEofCharp }, - { " ", "" }, + { " ", "", NULL, NULL }, { " ", "The following are for local editing in linemode", 0, 0 }, { "erase", "character to use to erase a character", 0, termEraseCharp }, { "kill", "character to use to erase a line", 0, termKillCharp }, @@ -905,7 +906,7 @@ static struct setlist Setlist[] = { { "forw1", "alternate end of line character", 0, termForw1Charp }, { "forw2", "alternate end of line character", 0, termForw2Charp }, { "ayt", "alternate AYT character", 0, termAytCharp }, - { 0 } + { .name = 0 } }; static struct setlist * @@ -1136,8 +1137,8 @@ clear_mode(int bit) } struct modelist { - char *name; /* command name */ - char *help; /* help string */ + const char *name; /* command name */ + const char *help; /* help string */ int (*handler) /* routine which executes command */ (int); int needconnect; /* Do we need to be connected to execute? */ @@ -1145,16 +1146,16 @@ struct modelist { }; static struct modelist ModeList[] = { - { "character", "Disable LINEMODE option", docharmode, 1 }, + { "character", "Disable LINEMODE option", docharmode, 1, 0 }, #ifdef KLUDGELINEMODE - { "", "(or disable obsolete line-by-line mode)", 0 }, + { "", "(or disable obsolete line-by-line mode)", 0, 0, 0 }, #endif - { "line", "Enable LINEMODE option", dolinemode, 1 }, + { "line", "Enable LINEMODE option", dolinemode, 1, 0 }, #ifdef KLUDGELINEMODE - { "", "(or enable obsolete line-by-line mode)", 0 }, + { "", "(or enable obsolete line-by-line mode)", 0, 0, 0 }, #endif - { "", "", 0 }, - { "", "These require the LINEMODE option to be enabled", 0 }, + { "", "", 0, 0, 0 }, + { "", "These require the LINEMODE option to be enabled", 0, 0, 0 }, { "isig", "Enable signal trapping", set_mode, 1, MODE_TRAPSIG }, { "+isig", 0, set_mode, 1, MODE_TRAPSIG }, { "-isig", "Disable signal trapping", clear_mode, 1, MODE_TRAPSIG }, @@ -1167,13 +1168,13 @@ static struct modelist ModeList[] = { { "litecho", "Enable literal character echo", set_mode, 1, MODE_LIT_ECHO }, { "+litecho", 0, set_mode, 1, MODE_LIT_ECHO }, { "-litecho", "Disable literal character echo", clear_mode, 1, MODE_LIT_ECHO }, - { "help", 0, modehelp, 0 }, + { "help", 0, modehelp, 0, 0 }, #ifdef KLUDGELINEMODE - { "kludgeline", 0, dokludgemode, 1 }, + { "kludgeline", 0, dokludgemode, 1, 0 }, #endif - { "", "", 0 }, - { "?", "Print help information", modehelp, 0 }, - { 0 }, + { "", "", 0, 0, 0 }, + { "?", "Print help information", modehelp, 0, 0 }, + { .name = 0 }, }; @@ -1375,7 +1376,7 @@ shell(int argc, char *argv[]) /* * Fire up the shell in the child. */ - char *shellp, *shellname; + const char *shellp, *shellname; shellp = getenv("SHELL"); if (shellp == NULL) @@ -1456,8 +1457,8 @@ logout(int argc, char *argv[]) */ struct slclist { - char *name; - char *help; + const char *name; + const char *help; void (*handler)(int); int arg; }; @@ -1471,7 +1472,7 @@ struct slclist SlcList[] = { slc_mode_import, 0 }, { "help", 0, slc_help, 0 }, { "?", "Print help information", slc_help, 0 }, - { 0 }, + { .name = 0 }, }; static void @@ -1527,9 +1528,9 @@ slccmd(int argc, char *argv[]) */ struct envlist { - char *name; - char *help; - struct env_lst *(*handler)(unsigned char *, unsigned char *); + const char *name; + const char *help; + struct env_lst *(*handler)(const unsigned char *, unsigned char *); int narg; }; @@ -1551,11 +1552,11 @@ struct envlist EnvList[] = { #endif { "help", 0, env_help, 0 }, { "?", "Print help information", env_help, 0 }, - { 0 }, + { .name = 0 }, }; static struct env_lst * -env_help( unsigned char *us1, unsigned char *us2) +env_help(const unsigned char *us1, unsigned char *us2) { struct envlist *c; @@ -1621,12 +1622,12 @@ struct env_lst { struct env_lst envlisthead; struct env_lst * -env_find(unsigned char *var) +env_find(const unsigned char *var) { struct env_lst *ep; for (ep = envlisthead.next; ep; ep = ep->next) { - if (strcmp((char *)ep->var, (char *)var) == 0) + if (strcmp((const char *)ep->var, (const char *)var) == 0) return(ep); } return(NULL); @@ -1672,15 +1673,15 @@ env_init(void) * don't export the USER variable. */ if ((env_find("USER") == NULL) && (ep = env_find("LOGNAME"))) { - env_define((unsigned char *)"USER", ep->value); - env_unexport((unsigned char *)"USER", NULL); + env_define((const unsigned char *)"USER", ep->value); + env_unexport((const unsigned char *)"USER", NULL); } - env_export((unsigned char *)"DISPLAY", NULL); - env_export((unsigned char *)"PRINTER", NULL); + env_export((const unsigned char *)"DISPLAY", NULL); + env_export((const unsigned char *)"PRINTER", NULL); } struct env_lst * -env_define(unsigned char *var, unsigned char *value) +env_define(const unsigned char *var, unsigned char *value) { struct env_lst *ep; @@ -1699,13 +1700,13 @@ env_define(unsigned char *var, unsigned } ep->welldefined = opt_welldefined(var); ep->export = 1; - ep->var = (unsigned char *)strdup((char *)var); - ep->value = (unsigned char *)strdup((char *)value); + ep->var = (unsigned char *)strdup((const char *)var); + ep->value = (unsigned char *)strdup((const char *)value); return(ep); } struct env_lst * -env_undefine(unsigned char *var, unsigned char *d) +env_undefine(const unsigned char *var, unsigned char *d) { struct env_lst *ep; @@ -1723,7 +1724,7 @@ env_undefine(unsigned char *var, unsigne } struct env_lst * -env_export(unsigned char *var, unsigned char *d) +env_export(const unsigned char *var, unsigned char *d) { struct env_lst *ep; @@ -1733,7 +1734,7 @@ env_export(unsigned char *var, unsigned } struct env_lst * -env_unexport(unsigned char *var, unsigned char *d) +env_unexport(const unsigned char *var, unsigned char *d) { struct env_lst *ep; @@ -1743,7 +1744,7 @@ env_unexport(unsigned char *var, unsigne } struct env_lst * -env_send(unsigned char *var, unsigned char *d) +env_send(const unsigned char *var, unsigned char *d) { struct env_lst *ep; @@ -1770,7 +1771,7 @@ env_send(unsigned char *var, unsigned ch } struct env_lst * -env_list(unsigned char *d1, unsigned char *d2) +env_list(const unsigned char *d1, unsigned char *d2) { struct env_lst *ep; @@ -1800,7 +1801,7 @@ env_default(int init, int welldefined) } unsigned char * -env_getvalue(unsigned char *var) +env_getvalue(const unsigned char *var) { struct env_lst *ep; @@ -1811,7 +1812,7 @@ env_getvalue(unsigned char *var) #if defined(OLD_ENVIRON) && defined(ENV_HACK) void -env_varval(unsigned char *what) +env_varval(const unsigned char *what) { extern int old_env_var, old_env_value, env_auto; int len = strlen((char *)what); @@ -1852,8 +1853,8 @@ unknown: */ struct authlist { - char *name; - char *help; + const char *name; + const char *help; int (*handler)(char *); int narg; }; @@ -1867,7 +1868,7 @@ struct authlist AuthList[] = { auth_enable, 1 }, { "help", 0, auth_help, 0 }, { "?", "Print help information", auth_help, 0 }, - { 0 }, + { .name = 0 }, }; static int @@ -1926,8 +1927,8 @@ auth_cmd(int argc, char *argv[]) */ struct encryptlist { - char *name; - char *help; + const char *name; + const char *help; int (*handler)(char *, char *); int needconnect; int minarg; @@ -1962,7 +1963,7 @@ struct encryptlist EncryptList[] = { (encrypthandler) EncryptStatus, 0, 0, 0 }, { "help", 0, EncryptHelp, 0, 0, 0 }, { "?", "Print help information", EncryptHelp, 0, 0, 0 }, - { 0 }, + { .name = 0 }, }; static int @@ -2159,7 +2160,7 @@ sockaddr_ntop(struct sockaddr *sa) static int setpolicy (int, struct addrinfo *, char *); static int -setpolicy(int net, struct addrinfo *res, char *policy) +setpolicy(int netw, struct addrinfo *res, char *policy) { char *buf; int level; @@ -2175,7 +2176,7 @@ setpolicy(int net, struct addrinfo *res, } level = res->ai_family == AF_INET ? IPPROTO_IP : IPPROTO_IPV6; optname = res->ai_family == AF_INET ? IP_IPSEC_POLICY : IPV6_IPSEC_POLICY; - if (setsockopt(net, level, optname, buf, ipsec_get_policylen(buf)) < 0){ + if (setsockopt(netw, level, optname, buf, ipsec_get_policylen(buf)) < 0){ perror("setsockopt"); return -1; } @@ -2189,14 +2190,15 @@ int tn(int argc, char *argv[]) { struct addrinfo hints, *res, *res0; - char *cause = "telnet: unknown"; + const char *cause = "telnet: unknown"; int error; #if defined(IP_OPTIONS) && defined(IPPROTO_IP) char *srp = 0; - unsigned long srlen; + long srlen; int proto, opt; #endif - char *cmd, *hostp = 0, *portp = 0; + char *cmd, *hostp = 0; + const char *portp = 0; const char *user = 0; if (connected) { @@ -2384,8 +2386,8 @@ tn(int argc, char *argv[]) } } if (user) { - env_define((unsigned char *)"USER", (unsigned char *)user); - env_export((unsigned char *)"USER", NULL); + env_define((const unsigned char *)"USER", __UNCONST(user)); + env_export((const unsigned char *)"USER", NULL); } (void) call(status, "status", "notmuch", 0); telnet(user); @@ -2499,7 +2501,7 @@ getcmd(char *name) } void -command(int top, char *tbuf, int cnt) +command(int top, const char *tbuf, int cnt) { Command *c; Index: src/usr.bin/telnet/externs.h diff -u src/usr.bin/telnet/externs.h:1.35 src/usr.bin/telnet/externs.h:1.36 --- src/usr.bin/telnet/externs.h:1.35 Wed Jan 4 11:09:43 2012 +++ src/usr.bin/telnet/externs.h Mon Jan 9 11:08:55 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: externs.h,v 1.35 2012/01/04 16:09:43 drochner Exp $ */ +/* $NetBSD: externs.h,v 1.36 2012/01/09 16:08:55 christos Exp $ */ /* * Copyright (c) 1988, 1990, 1993 @@ -201,7 +201,7 @@ char *telnet_getenv(char *); char *telnet_gets(char *, char *, int, int); /* commands.c */ -int send_tncmd(void (*)(int, int), char *, char *); +int send_tncmd(void (*)(int, int), const char *, char *); void _setlist_init(void); void set_escape_char(char *); int set_mode(int); @@ -212,22 +212,22 @@ int shell(int, char *[]); int quit(int, char *[]); int logout(int, char *[]); int env_cmd(int, char *[]); -struct env_lst *env_find(unsigned char *); +struct env_lst *env_find(const unsigned char *); void env_init(void); -struct env_lst *env_define(unsigned char *, unsigned char *); -struct env_lst *env_undefine(unsigned char *, unsigned char *); -struct env_lst *env_export(unsigned char *, unsigned char *); -struct env_lst *env_unexport(unsigned char *, unsigned char *); -struct env_lst *env_send(unsigned char *, unsigned char *); -struct env_lst *env_list(unsigned char *, unsigned char *); +struct env_lst *env_define(const unsigned char *, unsigned char *); +struct env_lst *env_undefine(const unsigned char *, unsigned char *); +struct env_lst *env_export(const unsigned char *, unsigned char *); +struct env_lst *env_unexport(const unsigned char *, unsigned char *); +struct env_lst *env_send(const unsigned char *, unsigned char *); +struct env_lst *env_list(const unsigned char *, unsigned char *); unsigned char *env_default(int, int ); -unsigned char *env_getvalue(unsigned char *); -void env_varval(unsigned char *); +unsigned char *env_getvalue(const unsigned char *); +void env_varval(const unsigned char *); int auth_cmd(int, char *[]); int ayt_status(void); int encrypt_cmd(int, char *[]); int tn(int, char *[]); -void command(int, char *, int); +void command(int, const char *, int); void cmdrc(const char *, const char *); struct addrinfo; int sourceroute(struct addrinfo *, char *, char **, int *, int*); @@ -296,7 +296,7 @@ void env_opt(unsigned char *, int); void env_opt_start(void); void env_opt_start_info(void); void env_opt_add(unsigned char *); -int opt_welldefined(char *); +int opt_welldefined(const char *); void env_opt_end(int); int telrcv(void); int rlogin_susp(void); @@ -329,13 +329,13 @@ void upcase(char *); int SetSockOpt(int, int, int, int); void SetNetTrace(char *); void Dump(int, unsigned char *, int); -void printoption(char *, int, int ); +void printoption(const char *, int, int ); void optionstatus(void); void printsub(int, unsigned char *, int); void EmptyTerminal(void); void SetForExit(void); void Exit(int) __attribute__((__noreturn__)); -void ExitString(char *, int) __attribute__((__noreturn__)); +void ExitString(const char *, int) __attribute__((__noreturn__)); extern struct termios new_tc; Index: src/usr.bin/telnet/main.c diff -u src/usr.bin/telnet/main.c:1.27 src/usr.bin/telnet/main.c:1.28 --- src/usr.bin/telnet/main.c:1.27 Mon Jul 21 10:19:26 2008 +++ src/usr.bin/telnet/main.c Mon Jan 9 11:08:55 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: main.c,v 1.27 2008/07/21 14:19:26 lukem Exp $ */ +/* $NetBSD: main.c,v 1.28 2012/01/09 16:08:55 christos Exp $ */ /* * Copyright (c) 1988, 1990, 1993 @@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1988, 19 #if 0 static char sccsid[] = "@(#)main.c 8.3 (Berkeley) 5/30/95"; #else -__RCSID("$NetBSD: main.c,v 1.27 2008/07/21 14:19:26 lukem Exp $"); +__RCSID("$NetBSD: main.c,v 1.28 2012/01/09 16:08:55 christos Exp $"); #endif #endif /* not lint */ @@ -325,6 +325,7 @@ main(int argc, char *argv[]) argv += optind; if (argc) { + static char ml[] = "-l"; char *args[7]; char ** volatile argp; /* avoid longjmp clobbering */ @@ -333,7 +334,7 @@ main(int argc, char *argv[]) usage(); *argp++ = prompt; if (user) { - *argp++ = "-l"; + *argp++ = ml; *argp++ = user; } *argp++ = argv[0]; /* host */ Index: src/usr.bin/telnet/sys_bsd.c diff -u src/usr.bin/telnet/sys_bsd.c:1.32 src/usr.bin/telnet/sys_bsd.c:1.33 --- src/usr.bin/telnet/sys_bsd.c:1.32 Wed Nov 10 15:26:43 2004 +++ src/usr.bin/telnet/sys_bsd.c Mon Jan 9 11:08:55 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: sys_bsd.c,v 1.32 2004/11/10 20:26:43 christos Exp $ */ +/* $NetBSD: sys_bsd.c,v 1.33 2012/01/09 16:08:55 christos Exp $ */ /* * Copyright (c) 1988, 1990, 1993 @@ -34,7 +34,7 @@ #if 0 from: static char sccsid[] = "@(#)sys_bsd.c 8.4 (Berkeley) 5/30/95"; #else -__RCSID("$NetBSD: sys_bsd.c,v 1.32 2004/11/10 20:26:43 christos Exp $"); +__RCSID("$NetBSD: sys_bsd.c,v 1.33 2012/01/09 16:08:55 christos Exp $"); #endif #endif /* not lint */ @@ -75,7 +75,7 @@ int tin, /* Input file descriptor */ net; -struct termios old_tc = { 0 }; +struct termios old_tc = { .c_iflag = 0 }; extern struct termios new_tc; # ifndef TCSANOW Index: src/usr.bin/telnet/telnet.c diff -u src/usr.bin/telnet/telnet.c:1.34 src/usr.bin/telnet/telnet.c:1.35 --- src/usr.bin/telnet/telnet.c:1.34 Fri Oct 7 12:30:17 2011 +++ src/usr.bin/telnet/telnet.c Mon Jan 9 11:08:55 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: telnet.c,v 1.34 2011/10/07 16:30:17 christos Exp $ */ +/* $NetBSD: telnet.c,v 1.35 2012/01/09 16:08:55 christos Exp $ */ /* * Copyright (c) 1988, 1990, 1993 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "@(#)telnet.c 8.4 (Berkeley) 5/30/95"; #else -__RCSID("$NetBSD: telnet.c,v 1.34 2011/10/07 16:30:17 christos Exp $"); +__RCSID("$NetBSD: telnet.c,v 1.35 2012/01/09 16:08:55 christos Exp $"); #endif #endif /* not lint */ @@ -527,7 +527,7 @@ dooption(int option) #endif case TELOPT_XDISPLOC: /* X Display location */ - if (env_getvalue((unsigned char *)"DISPLAY")) + if (env_getvalue((const unsigned char *)"DISPLAY")) new_state_ok = 1; break; @@ -618,7 +618,7 @@ dontoption(int option) * duplicate, or verbose names (names with spaces). */ -static char *name_unknown = "UNKNOWN"; +static char name_unknown[] = "UNKNOWN"; static char *unknown[] = { 0, 0 }; char ** @@ -800,7 +800,7 @@ gettermname(void) resettermname = 0; if (tnamep && tnamep != unknown) free(tnamep); - if ((tname = (char *)env_getvalue((unsigned char *)"TERM")) && + if ((tname = (char *)env_getvalue((const unsigned char *)"TERM")) && (setupterm(tname, 1, &err) == 0)) { tnamep = mklist(termbuf, tname); } else { @@ -872,14 +872,14 @@ suboption(void) if (SB_EOF()) return; if (SB_GET() == TELQUAL_SEND) { - long ospeed, ispeed; + long osp, isp; unsigned char temp[50]; int len; - TerminalSpeeds(&ispeed, &ospeed); + TerminalSpeeds(&isp, &osp); sprintf((char *)temp, "%c%c%c%c%ld,%ld%c%c", IAC, SB, TELOPT_TSPEED, - TELQUAL_IS, (long)ospeed, (long)ispeed, IAC, SE); + TELQUAL_IS, osp, isp, IAC, SE); len = strlen((char *)temp+4) + 4; /* temp[3] is 0 ... */ if (len < NETROOM()) { @@ -975,7 +975,7 @@ suboption(void) unsigned char temp[50], *dp; int len; - if ((dp = env_getvalue((unsigned char *)"DISPLAY")) == NULL) { + if ((dp = env_getvalue((const unsigned char *)"DISPLAY")) == NULL) { /* * Something happened, we no longer have a DISPLAY * variable. So, turn off the option. @@ -1106,7 +1106,7 @@ lm_will(unsigned char *cmd, int len) default: str_lm[3] = DONT; str_lm[4] = cmd[0]; - if (NETROOM() > sizeof(str_lm)) { + if ((size_t)NETROOM() > sizeof(str_lm)) { ring_supply_data(&netoring, str_lm, sizeof(str_lm)); printsub('>', &str_lm[2], sizeof(str_lm)-2); } @@ -1142,7 +1142,7 @@ lm_do(unsigned char *cmd, int len) default: str_lm[3] = WONT; str_lm[4] = cmd[0]; - if (NETROOM() > sizeof(str_lm)) { + if ((size_t)NETROOM() > sizeof(str_lm)) { ring_supply_data(&netoring, str_lm, sizeof(str_lm)); printsub('>', &str_lm[2], sizeof(str_lm)-2); } @@ -1183,7 +1183,7 @@ lm_mode(unsigned char *cmd, int len, int str_lm_mode[4] = linemode; if (!init) str_lm_mode[4] |= MODE_ACK; - if (NETROOM() > sizeof(str_lm_mode)) { + if ((size_t)NETROOM() > sizeof(str_lm_mode)) { ring_supply_data(&netoring, str_lm_mode, sizeof(str_lm_mode)); printsub('>', &str_lm_mode[2], sizeof(str_lm_mode)-2); } @@ -1297,7 +1297,7 @@ unsigned char slc_import_def[] = { void slc_import(int def) { - if (NETROOM() > sizeof(slc_import_val)) { + if ((size_t)NETROOM() > sizeof(slc_import_val)) { if (def) { ring_supply_data(&netoring, slc_import_def, sizeof(slc_import_def)); printsub('>', &slc_import_def[2], sizeof(slc_import_def)-2); @@ -1438,7 +1438,7 @@ slc_start_reply(void) void slc_add_reply(unsigned int func, unsigned int flags, cc_t value) { - if ((slc_replyp - slc_reply) + 6 > sizeof(slc_reply)) + if ((size_t)(slc_replyp - slc_reply) + 6 > sizeof(slc_reply)) return; if ((*slc_replyp++ = func) == IAC) *slc_replyp++ = IAC; @@ -1454,7 +1454,7 @@ slc_end_reply(void) int len; len = slc_replyp - slc_reply; - if (len <= 4 || (len + 2 > sizeof(slc_reply))) + if (len <= 4 || ((size_t)len + 2 > sizeof(slc_reply))) return; *slc_replyp++ = IAC; *slc_replyp++ = SE; @@ -1688,7 +1688,7 @@ env_opt_add(unsigned char *ep) } int -opt_welldefined(char *ep) +opt_welldefined(const char *ep) { if ((strcmp(ep, "USER") == 0) || (strcmp(ep, "DISPLAY") == 0) || @@ -2280,7 +2280,7 @@ telnet(const char *user) send_will(TELOPT_LINEMODE, 1); send_will(TELOPT_NEW_ENVIRON, 1); send_do(TELOPT_STATUS, 1); - if (env_getvalue((unsigned char *)"DISPLAY")) + if (env_getvalue((const unsigned char *)"DISPLAY")) send_will(TELOPT_XDISPLOC, 1); if (eight) tel_enter_binary(eight); Index: src/usr.bin/telnet/utilities.c diff -u src/usr.bin/telnet/utilities.c:1.22 src/usr.bin/telnet/utilities.c:1.23 --- src/usr.bin/telnet/utilities.c:1.22 Sat Oct 7 13:27:57 2006 +++ src/usr.bin/telnet/utilities.c Mon Jan 9 11:08:55 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: utilities.c,v 1.22 2006/10/07 17:27:57 elad Exp $ */ +/* $NetBSD: utilities.c,v 1.23 2012/01/09 16:08:55 christos Exp $ */ /* * Copyright (c) 1988, 1993 @@ -34,7 +34,7 @@ #if 0 static char sccsid[] = "@(#)utilities.c 8.3 (Berkeley) 5/30/95"; #else -__RCSID("$NetBSD: utilities.c,v 1.22 2006/10/07 17:27:57 elad Exp $"); +__RCSID("$NetBSD: utilities.c,v 1.23 2012/01/09 16:08:55 christos Exp $"); #endif #endif /* not lint */ @@ -172,7 +172,7 @@ Dump(int direction, unsigned char *buffe void -printoption(char *direction, int cmd, int option) +printoption(const char *direction, int cmd, int option) { if (!showoptions) return; @@ -182,7 +182,7 @@ printoption(char *direction, int cmd, in else fprintf(NetTrace, "%s IAC %d", direction, option); } else { - char *fmt; + const char *fmt; fmt = (cmd == WILL) ? "WILL" : (cmd == WONT) ? "WONT" : (cmd == DO) ? "DO" : (cmd == DONT) ? "DONT" : 0; if (fmt) { @@ -654,7 +654,7 @@ printsub( break; case TELOPT_STATUS: { - char *cp; + const char *cp; int j, k; fprintf(NetTrace, "STATUS"); @@ -768,7 +768,8 @@ printsub( fprintf(NetTrace, "INFO "); env_common: { - int noquote = 2; + static const char NQ[] = "\" "; + const char *noquote = NQ; #if defined(ENV_HACK) && defined(OLD_ENVIRON) extern int old_env_var, old_env_value; #endif @@ -780,14 +781,14 @@ printsub( if (pointer[0] == TELOPT_OLD_ENVIRON) { # ifdef ENV_HACK if (old_env_var == OLD_ENV_VALUE) - fprintf(NetTrace, "\" (VALUE) " + noquote); + fprintf(NetTrace, "%s(VALUE) ", noquote); else # endif - fprintf(NetTrace, "\" VAR " + noquote); + fprintf(NetTrace, "%sVAR ", noquote); } else #endif /* OLD_ENVIRON */ - fprintf(NetTrace, "\" VALUE " + noquote); - noquote = 2; + fprintf(NetTrace, "%sVALUE ", noquote); + noquote = NQ; break; case NEW_ENV_VAR: @@ -796,37 +797,37 @@ printsub( if (pointer[0] == TELOPT_OLD_ENVIRON) { # ifdef ENV_HACK if (old_env_value == OLD_ENV_VAR) - fprintf(NetTrace, "\" (VAR) " + noquote); + fprintf(NetTrace, "%s(VAR) ", noquote); else # endif - fprintf(NetTrace, "\" VALUE " + noquote); + fprintf(NetTrace, "%sVALUE ", noquote); } else #endif /* OLD_ENVIRON */ - fprintf(NetTrace, "\" VAR " + noquote); - noquote = 2; + fprintf(NetTrace, "%sVAR ", noquote); + noquote = NQ; break; case ENV_ESC: - fprintf(NetTrace, "\" ESC " + noquote); - noquote = 2; + fprintf(NetTrace, "%sESC ", noquote); + noquote = NQ; break; case ENV_USERVAR: - fprintf(NetTrace, "\" USERVAR " + noquote); - noquote = 2; + fprintf(NetTrace, "%sUSERVAR ", noquote); + noquote = NQ; break; default: if (isprint(pointer[i]) && pointer[i] != '"') { - if (noquote) { + if (*noquote) { putc('"', NetTrace); - noquote = 0; + noquote = ""; } putc(pointer[i], NetTrace); } else { - fprintf(NetTrace, "\" %03o " + noquote, + fprintf(NetTrace, "%s%03o ", noquote, pointer[i]); - noquote = 2; + noquote = NQ; } break; } @@ -916,7 +917,7 @@ Exit(int returnCode) } void -ExitString(char *string, int returnCode) +ExitString(const char *string, int returnCode) { SetForExit(); fwrite(string, 1, strlen(string), stderr);