diff options
author | brian <brian@FreeBSD.org> | 1997-12-17 21:21:42 +0000 |
---|---|---|
committer | brian <brian@FreeBSD.org> | 1997-12-17 21:21:42 +0000 |
commit | 4f380fde8de0efa16879edc20885396f3a7433e9 (patch) | |
tree | 75bee766c2f794c4dfdb16a36d8b643619bbdf27 /usr.sbin/ppp/command.c | |
parent | d1353afc41592528ea3bce8cb01b6bc1b278a751 (diff) | |
download | FreeBSD-src-4f380fde8de0efa16879edc20885396f3a7433e9.zip FreeBSD-src-4f380fde8de0efa16879edc20885396f3a7433e9.tar.gz |
o Log ******** instead of the actual password for "set authkey"
when command logging is switched on.
o Display ******** for the authkey for "show auth"
o Document how \P should be used, and document the other chat escapes
while I'm there.
o Make sure the full command is displayed when a compound command
fails - ie, "set novar rubbish" should say "set novar: Invalid command"
rather than "novar: Invalid command"
Problem pointed out by: Theo de Raadt <deraadt@cvs.openbsd.org> (among others)
Diffstat (limited to 'usr.sbin/ppp/command.c')
-rw-r--r-- | usr.sbin/ppp/command.c | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/usr.sbin/ppp/command.c b/usr.sbin/ppp/command.c index d29d5e2..78441f8 100644 --- a/usr.sbin/ppp/command.c +++ b/usr.sbin/ppp/command.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: command.c,v 1.110 1997/12/15 20:21:46 brian Exp $ + * $Id: command.c,v 1.111 1997/12/17 00:19:22 brian Exp $ * */ #include <sys/param.h> @@ -75,6 +75,7 @@ #include "auth.h" struct in_addr ifnetmask; +static const char *HIDDEN = "********"; static int ShowCommand(struct cmdargs const *arg); static int TerminalCommand(struct cmdargs const *arg); @@ -487,7 +488,7 @@ ShowAuthKey(struct cmdargs const *arg) if (!VarTerm) return 0; fprintf(VarTerm, "AuthName = %s\n", VarAuthName); - fprintf(VarTerm, "AuthKey = %s\n", VarAuthKey); + fprintf(VarTerm, "AuthKey = %s\n", HIDDEN); #ifdef HAVE_DES fprintf(VarTerm, "Encrypt = %s\n", VarMSChap ? "MSChap" : "MD5" ); #endif @@ -666,7 +667,8 @@ FindCommand(struct cmdtab const *cmds, const char *str, int *pmatch) } static int -FindExec(struct cmdtab const *cmds, int argc, char const *const *argv) +FindExec(struct cmdtab const *cmds, int argc, char const *const *argv, + const char *prefix) { struct cmdtab const *cmd; int val = 1; @@ -675,7 +677,7 @@ FindExec(struct cmdtab const *cmds, int argc, char const *const *argv) cmd = FindCommand(cmds, *argv, &nmatch); if (nmatch > 1) - LogPrintf(LogWARN, "%s: Ambiguous command\n", *argv); + LogPrintf(LogWARN, "%s%s: Ambiguous command\n", prefix, *argv); else if (cmd && (cmd->lauth & VarLocalAuth)) { arg.cmd = cmds; arg.argc = argc-1; @@ -683,12 +685,12 @@ FindExec(struct cmdtab const *cmds, int argc, char const *const *argv) arg.data = cmd->args; val = (cmd->func) (&arg); } else - LogPrintf(LogWARN, "%s: Invalid command\n", *argv); + LogPrintf(LogWARN, "%s%s: Invalid command\n", prefix, *argv); if (val == -1) LogPrintf(LogWARN, "Usage: %s\n", cmd->syntax); else if (val) - LogPrintf(LogWARN, "%s: Failed %d\n", *argv, val); + LogPrintf(LogWARN, "%s%s: Failed %d\n", prefix, *argv, val); return val; } @@ -736,6 +738,17 @@ InterpretCommand(char *buff, int nb, int *argc, char ***argv) *argc = 0; } +static int +arghidden(int argc, char const *const *argv, int n) +{ + /* Is arg n of the given command to be hidden from the log ? */ + if (n == 2 && !strncasecmp(argv[0], "se", 2) && + (!strncasecmp(argv[1], "authk", 5) || !strncasecmp(argv[1], "ke", 2))) + return 1; + + return 0; +} + void RunCommand(int argc, char const *const *argv, const char *label) { @@ -754,12 +767,15 @@ RunCommand(int argc, char const *const *argv, const char *label) for (f = 0; f < argc; f++) { if (n < sizeof(buf)-1 && f) buf[n++] = ' '; - strncpy(buf+n, argv[f], sizeof(buf)-n-1); + if (arghidden(argc, argv, f)) + strncpy(buf+n, HIDDEN, sizeof(buf)-n-1); + else + strncpy(buf+n, argv[f], sizeof(buf)-n-1); n += strlen(buf+n); } LogPrintf(LogCOMMAND, "%s\n", buf); } - FindExec(Commands, argc, argv); + FindExec(Commands, argc, argv, ""); } } @@ -777,7 +793,7 @@ static int ShowCommand(struct cmdargs const *arg) { if (arg->argc > 0) - FindExec(ShowCommands, arg->argc, arg->argv); + FindExec(ShowCommands, arg->argc, arg->argv, "show "); else if (VarTerm) fprintf(VarTerm, "Use ``show ?'' to get a arg->cmd.\n"); else @@ -1459,7 +1475,7 @@ static int SetCommand(struct cmdargs const *arg) { if (arg->argc > 0) - FindExec(SetCommands, arg->argc, arg->argv); + FindExec(SetCommands, arg->argc, arg->argv, "set "); else if (VarTerm) fprintf(VarTerm, "Use `set ?' to get a arg->cmd or `set ? <var>' for" " syntax help.\n"); @@ -1563,7 +1579,7 @@ static int AliasCommand(struct cmdargs const *arg) { if (arg->argc > 0) - FindExec(AliasCommands, arg->argc, arg->argv); + FindExec(AliasCommands, arg->argc, arg->argv, "alias "); else if (VarTerm) fprintf(VarTerm, "Use `alias help' to get a arg->cmd or `alias help <option>'" " for syntax help.\n"); @@ -1634,7 +1650,7 @@ static int AllowCommand(struct cmdargs const *arg) { if (arg->argc > 0) - FindExec(AllowCommands, arg->argc, arg->argv); + FindExec(AllowCommands, arg->argc, arg->argv, "allow "); else if (VarTerm) fprintf(VarTerm, "Use `allow ?' to get a arg->cmd or `allow ? <cmd>' for" " syntax help.\n"); |