=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/ssh/ssh.c,v retrieving revision 1.108 retrieving revision 1.109 diff -u -r1.108 -r1.109 --- src/usr.bin/ssh/ssh.c 2001/04/07 08:55:18 1.108 +++ src/usr.bin/ssh/ssh.c 2001/04/11 10:59:01 1.109 @@ -39,7 +39,7 @@ */ #include "includes.h" -RCSID("$OpenBSD: ssh.c,v 1.108 2001/04/07 08:55:18 markus Exp $"); +RCSID("$OpenBSD: ssh.c,v 1.109 2001/04/11 10:59:01 markus Exp $"); #include #include @@ -235,7 +235,7 @@ { int i, opt, optind, exit_status, ok; u_short fwd_port, fwd_host_port; - char *optarg, *cp, buf[256]; + char *optarg, *cp, *endofnumber, buf[256]; struct stat st; struct passwd *pw; int dummy; @@ -443,7 +443,11 @@ } break; case 'p': - options.port = atoi(optarg); + options.port = strtol(optarg, &endofnumber, 0); + if (optarg == endofnumber) { + fprintf(stderr, "Bad port '%s'\n", optarg); + exit(1); + } break; case 'l': options.user = optarg; @@ -472,7 +476,11 @@ break; case 'D': - fwd_port = atoi(optarg); + fwd_port = strtol(optarg, &endofnumber, 0); + if (optarg == endofnumber) { + fprintf(stderr, "Bad port '%s'\n", optarg); + exit(1); + } add_local_forward(&options, fwd_port, "socks4", 0); break;