cmds.c: fix broken port number check
authorKen Raeburn <raeburn@mit.edu>
Tue, 1 May 2001 22:46:11 +0000 (22:46 +0000)
committerKen Raeburn <raeburn@mit.edu>
Tue, 1 May 2001 22:46:11 +0000 (22:46 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@13225 dc483132-0cff-0310-8789-dd5450dbe970

src/appl/gssftp/ftp/ChangeLog
src/appl/gssftp/ftp/cmds.c

index 7c915b1a79cc0c0a8160d250087970ccbd4df199..ba6f78147117748e68b8572e3a790b466774dd1d 100644 (file)
@@ -1,3 +1,9 @@
+2001-05-01  Ken Raeburn  <raeburn@mit.edu>
+
+       * cmds.c (setpeer): Port number should be unsigned short.  (Patch
+       from Garry Zacheiss.)  Add upper-bound check in case short is not
+       exactly 16 bits.  Don't truncate the port number before checking.
+
 2001-04-27  Ezra Peisach  <epeisach@mit.edu>
 
        * ftp_var.h: Prototype for recvrequest() needs volatile
index 40eff2d3f3ac101c79b39f52e82b07ec49a363e5..f0f26df676b33701272e1a61af2d5fd7968fc376 100644 (file)
@@ -141,7 +141,7 @@ void setpeer(argc, argv)
        char *argv[];
 {
        char *host, *hookup();
-       short port;
+       unsigned short port;
 
        if (connected) {
                printf("Already connected to %s, use close first.\n",
@@ -158,14 +158,14 @@ void setpeer(argc, argv)
        }
        port = sp->s_port;
        if (argc > 2) {
-               port = atoi(argv[2]);
-               if (port <= 0) {
+               int iport = atoi (argv[2]);
+               if (iport <= 0 || iport >= 65536) {
                        printf("%s: bad port number-- %s\n", argv[1], argv[2]);
                        printf ("usage: %s host-name [port]\n", argv[0]);
                        code = -1;
                        return;
                }
-               port = htons(port);
+               port = htons(iport);
        }
        host = hookup(argv[1], port);
        if (host) {