summaryrefslogtreecommitdiff
path: root/usr.bin/ssh
diff options
context:
space:
mode:
authorHakan Olsson <ho@cvs.openbsd.org>2000-07-10 16:30:26 +0000
committerHakan Olsson <ho@cvs.openbsd.org>2000-07-10 16:30:26 +0000
commitb54e836aca681f47df58c03bbbd606996e5b90ba (patch)
tree8d48afd9e9e26659ce545196830885d4898b1f57 /usr.bin/ssh
parenta675ee9e6e584e5bf77473a9d38b38cc9d076edb (diff)
strtok() --> strsep(). (niels@ ok)
Diffstat (limited to 'usr.bin/ssh')
-rw-r--r--usr.bin/ssh/cipher.c9
-rw-r--r--usr.bin/ssh/kex.c14
-rw-r--r--usr.bin/ssh/servconf.c127
3 files changed, 77 insertions, 73 deletions
diff --git a/usr.bin/ssh/cipher.c b/usr.bin/ssh/cipher.c
index 97cbd38cae7..a44e51d98a2 100644
--- a/usr.bin/ssh/cipher.c
+++ b/usr.bin/ssh/cipher.c
@@ -12,7 +12,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: cipher.c,v 1.28 2000/06/20 01:39:40 markus Exp $");
+RCSID("$OpenBSD: cipher.c,v 1.29 2000/07/10 16:30:25 ho Exp $");
#include "ssh.h"
#include "cipher.h"
@@ -174,14 +174,15 @@ cipher_name(int cipher)
int
ciphers_valid(const char *names)
{
- char *ciphers;
+ char *ciphers, *cp;
char *p;
int i;
if (names == NULL || strcmp(names, "") == 0)
return 0;
- ciphers = xstrdup(names);
- for ((p = strtok(ciphers, CIPHER_SEP)); p; (p = strtok(NULL, CIPHER_SEP))) {
+ ciphers = cp = xstrdup(names);
+ for ((p = strsep(&cp, CIPHER_SEP)); p && *p != '\0';
+ (p = strsep(&cp, CIPHER_SEP))) {
i = cipher_number(p);
if (i == -1 || !(cipher_mask2() & (1 << i))) {
xfree(ciphers);
diff --git a/usr.bin/ssh/kex.c b/usr.bin/ssh/kex.c
index b0d47b5b140..b488090b497 100644
--- a/usr.bin/ssh/kex.c
+++ b/usr.bin/ssh/kex.c
@@ -28,7 +28,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: kex.c,v 1.8 2000/06/20 01:39:41 markus Exp $");
+RCSID("$OpenBSD: kex.c,v 1.9 2000/07/10 16:30:25 ho Exp $");
#include "ssh.h"
#include "ssh2.h"
@@ -287,13 +287,14 @@ char *
get_match(char *client, char *server)
{
char *sproposals[MAX_PROP];
- char *c, *s, *p, *ret;
+ char *c, *s, *p, *ret, *cp, *sp;
int i, j, nproposals;
- c = xstrdup(client);
- s = xstrdup(server);
+ c = cp = xstrdup(client);
+ s = sp = xstrdup(server);
- for ((p = strtok(s, SEP)), i=0; p; (p = strtok(NULL, SEP)), i++) {
+ for ((p = strsep(&sp, SEP)), i=0; p && *p != '\0';
+ (p = strsep(&sp, SEP)), i++) {
if (i < MAX_PROP)
sproposals[i] = p;
else
@@ -301,7 +302,8 @@ get_match(char *client, char *server)
}
nproposals = i;
- for ((p = strtok(c, SEP)), i=0; p; (p = strtok(NULL, SEP)), i++) {
+ for ((p = strsep(&cp, SEP)), i=0; p && *p != '\0';
+ (p = strsep(&cp, SEP)), i++) {
for (j = 0; j < nproposals; j++) {
if (strcmp(p, sproposals[j]) == 0) {
ret = xstrdup(p);
diff --git a/usr.bin/ssh/servconf.c b/usr.bin/ssh/servconf.c
index b8481319a3f..77ac8452749 100644
--- a/usr.bin/ssh/servconf.c
+++ b/usr.bin/ssh/servconf.c
@@ -12,7 +12,7 @@
*/
#include "includes.h"
-RCSID("$OpenBSD: servconf.c,v 1.46 2000/06/26 21:59:18 markus Exp $");
+RCSID("$OpenBSD: servconf.c,v 1.47 2000/07/10 16:30:25 ho Exp $");
#include "ssh.h"
#include "servconf.h"
@@ -304,7 +304,7 @@ read_server_config(ServerOptions *options, const char *filename)
{
FILE *f;
char line[1024];
- char *cp, **charptr;
+ char *cp, **charptr, *arg;
int linenum, *intptr, value;
int bad_options = 0;
ServerOpCodes opcode;
@@ -321,8 +321,8 @@ read_server_config(ServerOptions *options, const char *filename)
cp = line + strspn(line, WHITESPACE);
if (!*cp || *cp == '#')
continue;
- cp = strtok(cp, WHITESPACE);
- opcode = parse_token(cp, filename, linenum);
+ arg = strsep(&cp, WHITESPACE);
+ opcode = parse_token(arg, filename, linenum);
switch (opcode) {
case sBadOption:
bad_options++;
@@ -337,23 +337,23 @@ read_server_config(ServerOptions *options, const char *filename)
if (options->num_ports >= MAX_PORTS)
fatal("%s line %d: too many ports.\n",
filename, linenum);
- cp = strtok(NULL, WHITESPACE);
- if (!cp)
+ arg = strsep(&cp, WHITESPACE);
+ if (!arg || *arg == '\0')
fatal("%s line %d: missing port number.\n",
filename, linenum);
- options->ports[options->num_ports++] = atoi(cp);
+ options->ports[options->num_ports++] = atoi(arg);
break;
case sServerKeyBits:
intptr = &options->server_key_bits;
parse_int:
- cp = strtok(NULL, WHITESPACE);
- if (!cp) {
+ arg = strsep(&cp, WHITESPACE);
+ if (!arg || *arg == '\0') {
fprintf(stderr, "%s line %d: missing integer value.\n",
filename, linenum);
exit(1);
}
- value = atoi(cp);
+ value = atoi(arg);
if (*intptr == -1)
*intptr = value;
break;
@@ -367,11 +367,11 @@ parse_int:
goto parse_int;
case sListenAddress:
- cp = strtok(NULL, WHITESPACE);
- if (!cp)
+ arg = strsep(&cp, WHITESPACE);
+ if (!arg || *arg == '\0')
fatal("%s line %d: missing inet addr.\n",
filename, linenum);
- add_listen_addr(options, cp);
+ add_listen_addr(options, arg);
break;
case sHostKeyFile:
@@ -379,14 +379,14 @@ parse_int:
charptr = (opcode == sHostKeyFile ) ?
&options->host_key_file : &options->host_dsa_key_file;
parse_filename:
- cp = strtok(NULL, WHITESPACE);
- if (!cp) {
+ arg = strsep(&cp, WHITESPACE);
+ if (!arg || *arg == '\0') {
fprintf(stderr, "%s line %d: missing file name.\n",
filename, linenum);
exit(1);
}
if (*charptr == NULL)
- *charptr = tilde_expand_filename(cp, getuid());
+ *charptr = tilde_expand_filename(arg, getuid());
break;
case sPidFile:
@@ -396,26 +396,26 @@ parse_filename:
case sRandomSeedFile:
fprintf(stderr, "%s line %d: \"randomseed\" option is obsolete.\n",
filename, linenum);
- cp = strtok(NULL, WHITESPACE);
+ arg = strsep(&cp, WHITESPACE);
break;
case sPermitRootLogin:
intptr = &options->permit_root_login;
- cp = strtok(NULL, WHITESPACE);
- if (!cp) {
+ arg = strsep(&cp, WHITESPACE);
+ if (!arg || *arg == '\0') {
fprintf(stderr, "%s line %d: missing yes/without-password/no argument.\n",
filename, linenum);
exit(1);
}
- if (strcmp(cp, "without-password") == 0)
+ if (strcmp(arg, "without-password") == 0)
value = 2;
- else if (strcmp(cp, "yes") == 0)
+ else if (strcmp(arg, "yes") == 0)
value = 1;
- else if (strcmp(cp, "no") == 0)
+ else if (strcmp(arg, "no") == 0)
value = 0;
else {
fprintf(stderr, "%s line %d: Bad yes/without-password/no argument: %s\n",
- filename, linenum, cp);
+ filename, linenum, arg);
exit(1);
}
if (*intptr == -1)
@@ -425,19 +425,19 @@ parse_filename:
case sIgnoreRhosts:
intptr = &options->ignore_rhosts;
parse_flag:
- cp = strtok(NULL, WHITESPACE);
- if (!cp) {
+ arg = strsep(&cp, WHITESPACE);
+ if (!arg || *arg == '\0') {
fprintf(stderr, "%s line %d: missing yes/no argument.\n",
filename, linenum);
exit(1);
}
- if (strcmp(cp, "yes") == 0)
+ if (strcmp(arg, "yes") == 0)
value = 1;
- else if (strcmp(cp, "no") == 0)
+ else if (strcmp(arg, "no") == 0)
value = 0;
else {
fprintf(stderr, "%s line %d: Bad yes/no argument: %s\n",
- filename, linenum, cp);
+ filename, linenum, arg);
exit(1);
}
if (*intptr == -1)
@@ -540,82 +540,82 @@ parse_flag:
case sLogFacility:
intptr = (int *) &options->log_facility;
- cp = strtok(NULL, WHITESPACE);
- value = log_facility_number(cp);
+ arg = strsep(&cp, WHITESPACE);
+ value = log_facility_number(arg);
if (value == (SyslogFacility) - 1)
fatal("%.200s line %d: unsupported log facility '%s'\n",
- filename, linenum, cp ? cp : "<NONE>");
+ filename, linenum, arg ? arg : "<NONE>");
if (*intptr == -1)
*intptr = (SyslogFacility) value;
break;
case sLogLevel:
intptr = (int *) &options->log_level;
- cp = strtok(NULL, WHITESPACE);
- value = log_level_number(cp);
+ arg = strsep(&cp, WHITESPACE);
+ value = log_level_number(arg);
if (value == (LogLevel) - 1)
fatal("%.200s line %d: unsupported log level '%s'\n",
- filename, linenum, cp ? cp : "<NONE>");
+ filename, linenum, arg ? arg : "<NONE>");
if (*intptr == -1)
*intptr = (LogLevel) value;
break;
case sAllowUsers:
- while ((cp = strtok(NULL, WHITESPACE))) {
+ while ((arg = strsep(&cp, WHITESPACE)) && *arg != '\0') {
if (options->num_allow_users >= MAX_ALLOW_USERS)
fatal("%s line %d: too many allow users.\n",
filename, linenum);
- options->allow_users[options->num_allow_users++] = xstrdup(cp);
+ options->allow_users[options->num_allow_users++] = xstrdup(arg);
}
break;
case sDenyUsers:
- while ((cp = strtok(NULL, WHITESPACE))) {
+ while ((arg = strsep(&cp, WHITESPACE)) && *arg != '\0') {
if (options->num_deny_users >= MAX_DENY_USERS)
fatal( "%s line %d: too many deny users.\n",
filename, linenum);
- options->deny_users[options->num_deny_users++] = xstrdup(cp);
+ options->deny_users[options->num_deny_users++] = xstrdup(arg);
}
break;
case sAllowGroups:
- while ((cp = strtok(NULL, WHITESPACE))) {
+ while ((arg = strsep(&cp, WHITESPACE)) && *arg != '\0') {
if (options->num_allow_groups >= MAX_ALLOW_GROUPS)
fatal("%s line %d: too many allow groups.\n",
filename, linenum);
- options->allow_groups[options->num_allow_groups++] = xstrdup(cp);
+ options->allow_groups[options->num_allow_groups++] = xstrdup(arg);
}
break;
case sDenyGroups:
- while ((cp = strtok(NULL, WHITESPACE))) {
+ while ((arg = strsep(&cp, WHITESPACE)) && *arg != '\0') {
if (options->num_deny_groups >= MAX_DENY_GROUPS)
fatal("%s line %d: too many deny groups.\n",
filename, linenum);
- options->deny_groups[options->num_deny_groups++] = xstrdup(cp);
+ options->deny_groups[options->num_deny_groups++] = xstrdup(arg);
}
break;
case sCiphers:
- cp = strtok(NULL, WHITESPACE);
- if (!cp)
+ arg = strsep(&cp, WHITESPACE);
+ if (!arg || *arg == '\0')
fatal("%s line %d: Missing argument.", filename, linenum);
- if (!ciphers_valid(cp))
+ if (!ciphers_valid(arg))
fatal("%s line %d: Bad SSH2 cipher spec '%s'.",
- filename, linenum, cp ? cp : "<NONE>");
+ filename, linenum, arg ? arg : "<NONE>");
if (options->ciphers == NULL)
- options->ciphers = xstrdup(cp);
+ options->ciphers = xstrdup(arg);
break;
case sProtocol:
intptr = &options->protocol;
- cp = strtok(NULL, WHITESPACE);
- if (!cp)
+ arg = strsep(&cp, WHITESPACE);
+ if (!arg || *arg == '\0')
fatal("%s line %d: Missing argument.", filename, linenum);
- value = proto_spec(cp);
+ value = proto_spec(arg);
if (value == SSH_PROTO_UNKNOWN)
fatal("%s line %d: Bad protocol spec '%s'.",
- filename, linenum, cp ? cp : "<NONE>");
+ filename, linenum, arg ? arg : "<NONE>");
if (*intptr == SSH_PROTO_UNKNOWN)
*intptr = value;
break;
@@ -625,20 +625,20 @@ parse_flag:
fatal("%s line %d: too many subsystems defined.",
filename, linenum);
}
- cp = strtok(NULL, WHITESPACE);
- if (!cp)
+ arg = strsep(&cp, WHITESPACE);
+ if (!arg || *arg == '\0')
fatal("%s line %d: Missing subsystem name.",
filename, linenum);
for (i = 0; i < options->num_subsystems; i++)
- if(strcmp(cp, options->subsystem_name[i]) == 0)
+ if(strcmp(arg, options->subsystem_name[i]) == 0)
fatal("%s line %d: Subsystem '%s' already defined.",
- filename, linenum, cp);
- options->subsystem_name[options->num_subsystems] = xstrdup(cp);
- cp = strtok(NULL, WHITESPACE);
- if (!cp)
+ filename, linenum, arg);
+ options->subsystem_name[options->num_subsystems] = xstrdup(arg);
+ arg = strsep(&cp, WHITESPACE);
+ if (!arg || *arg == '\0')
fatal("%s line %d: Missing subsystem command.",
filename, linenum);
- options->subsystem_command[options->num_subsystems] = xstrdup(cp);
+ options->subsystem_command[options->num_subsystems] = xstrdup(arg);
options->num_subsystems++;
break;
@@ -648,12 +648,13 @@ parse_flag:
default:
fprintf(stderr, "%s line %d: Missing handler for opcode %s (%d)\n",
- filename, linenum, cp, opcode);
+ filename, linenum, arg, opcode);
exit(1);
}
- if (strtok(NULL, WHITESPACE) != NULL) {
- fprintf(stderr, "%s line %d: garbage at end of line.\n",
- filename, linenum);
+ if ((arg = strsep(&cp, WHITESPACE)) != NULL && *arg != '\0') {
+ fprintf(stderr,
+ "%s line %d: garbage at end of line; \"%.200s\".\n",
+ filename, linenum, arg);
exit(1);
}
}