Fixed checking of IPv4 port validity.
authorshort <>
Sun, 26 Jun 2005 03:00:18 +0000 (03:00 +0000)
committershort <>
Sun, 26 Jun 2005 03:00:18 +0000 (03:00 +0000)
src/network.c

index 59d3a9a..c658c13 100644 (file)
@@ -580,19 +580,26 @@ size_t packet_length;
 static gboolean master_start(gint port)
 {
 struct sockaddr_in sockaddr_in;
+uint16_t port_use;
 
        g_return_val_if_fail(port>=0,FALSE);
        g_return_val_if_fail(master==NULL,FALSE);
 
+       port_use=port;
+       if (port < 0 || port_use != port) {
+               g_warning(_("Port value %d is not valid for IPv4!"),(int)port);
+               return FALSE;
+               }
+
        /* Setup 'master': */
        if (!(master=client_new()))
                return FALSE;
        UDPGATE_MEMZERO(&sockaddr_in);
        sockaddr_in.sin_family=AF_INET;
-       sockaddr_in.sin_port=htons(port);
+       sockaddr_in.sin_port=htons(port_use);
        sockaddr_in.sin_addr.s_addr=htonl(INADDR_ANY);
        if (bind(master->gpollfd.fd,(struct sockaddr *)&sockaddr_in,sizeof(sockaddr_in))) {
-               g_warning("bind(sock,{AF_INET,INADDR_ANY:%d}): %m",(int)port);
+               g_warning("bind(sock,{AF_INET,INADDR_ANY:%u}): %m",(unsigned)port_use);
                return FALSE;
                }
        return TRUE;