gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r25829 - gnunet/src/transport


From: gnunet
Subject: [GNUnet-SVN] r25829 - gnunet/src/transport
Date: Fri, 18 Jan 2013 13:23:12 +0100

Author: wachs
Date: 2013-01-18 13:23:11 +0100 (Fri, 18 Jan 2013)
New Revision: 25829

Modified:
   gnunet/src/transport/plugin_transport_http_common.c
   gnunet/src/transport/test_http_common.c
Log:
 changes


Modified: gnunet/src/transport/plugin_transport_http_common.c
===================================================================
--- gnunet/src/transport/plugin_transport_http_common.c 2013-01-18 12:01:46 UTC 
(rev 25828)
+++ gnunet/src/transport/plugin_transport_http_common.c 2013-01-18 12:23:11 UTC 
(rev 25829)
@@ -47,7 +47,6 @@
        char *v6_end = NULL;
        char *port_start = NULL;
        char *path_start = NULL;
-
        protocol_start = src;
        sp = GNUNET_malloc (sizeof (struct SplittedHTTPAddress));
 
@@ -103,6 +102,14 @@
                                                        port_start[0] = '\0';
                                                        port_start ++;
                                                        sp->port = atoi 
(port_start);
+                                                       if ((0 == sp->port) || 
(65535 < sp->port))
+                                                       {
+                                                               GNUNET_free 
(src);
+                                                               GNUNET_free 
(sp->protocol);
+                                                               GNUNET_free 
(sp->path);
+                                                               GNUNET_free 
(sp);
+                                                               return NULL;
+                                                       }
                                        }
                                        else
                                        {
@@ -119,6 +126,14 @@
                                        port_start[0] = '\0';
                                        port_start ++;
                                        sp->port = atoi (port_start);
+                                       if ((0 == sp->port) || (65535 < 
sp->port))
+                                       {
+                                               GNUNET_free (src);
+                                               GNUNET_free (sp->protocol);
+                                               GNUNET_free (sp->path);
+                                               GNUNET_free (sp);
+                                               return NULL;
+                                       }
                        }
        }
        else
@@ -150,7 +165,6 @@
                        return NULL;
        }
        GNUNET_free (src);
-       //fprintf (stderr, "addr: `%s' protocol: `%s', host `%s' port `%u' path 
`%s'\n", addr, sp->protocol, sp->host, sp->port, sp->path);
        return sp;
 }
 

Modified: gnunet/src/transport/test_http_common.c
===================================================================
--- gnunet/src/transport/test_http_common.c     2013-01-18 12:01:46 UTC (rev 
25828)
+++ gnunet/src/transport/test_http_common.c     2013-01-18 12:23:11 UTC (rev 
25829)
@@ -112,7 +112,7 @@
        return GNUNET_OK;
 }
 
-void
+int
 check_pass (char *src,
                                                char * protocol,
                                                char * host,
@@ -124,33 +124,55 @@
   if (NULL == spa)
   {
        GNUNET_break (0);
+       return GNUNET_SYSERR;
   }
   else
   {
                if (GNUNET_OK != check(spa, protocol, host, port, path))
                {
+                               clean (spa);
                                GNUNET_break (0);
+                       return GNUNET_SYSERR;
                }
                clean (spa);
   }
+  return GNUNET_OK;
 }
 
+int
+check_fail (char *src)
+{
+       struct SplittedHTTPAddress * spa;
+  spa = http_split_address (src);
+  if (NULL != spa)
+  {
+       GNUNET_break (0);
+       clean (spa);
+       return GNUNET_SYSERR;
+  }
+  return GNUNET_OK;
+}
+
+
 void
-test_hostname ()
+test_pass_hostname ()
 {
   check_pass("http://test.local";, "http", "test.local", HTTP_DEFAULT_PORT, "");
   check_pass("http://test.local/";, "http", "test.local", HTTP_DEFAULT_PORT, 
"/");
   check_pass("http://test.local/path";, "http", "test.local", 
HTTP_DEFAULT_PORT, "/path");
   check_pass("http://test.local/path/";, "http", "test.local", 
HTTP_DEFAULT_PORT, "/path/");
+  check_pass("http://test.local/path/more";, "http", "test.local", 
HTTP_DEFAULT_PORT, "/path/more");
   check_pass("http://test.local:81";, "http", "test.local", 81, "");
   check_pass("http://test.local:81/";, "http", "test.local", 81, "/");
   check_pass("http://test.local:81/path";, "http", "test.local", 81, "/path");
   check_pass("http://test.local:81/path/";, "http", "test.local", 81, "/path/");
+  check_pass("http://test.local:81/path/more";, "http", "test.local", 81, 
"/path/more");
 
 }
 
+
 void
-test_ipv4 ()
+test_pass_ipv4 ()
 {
   check_pass("http://127.0.0.1";, "http", "127.0.0.1", HTTP_DEFAULT_PORT, "");
   check_pass("http://127.0.0.1/";, "http", "127.0.0.1", HTTP_DEFAULT_PORT, "/");
@@ -160,10 +182,11 @@
   check_pass("http://127.0.0.1:81/";, "http", "127.0.0.1", 81, "/");
   check_pass("http://127.0.0.1:81/path";, "http", "127.0.0.1", 81, "/path");
   check_pass("http://127.0.0.1:81/path/";, "http", "127.0.0.1", 81, "/path/");
+  check_pass("http://127.0.0.1:81/path/more";, "http", "127.0.0.1", 81, 
"/path/more");
 }
 
 void
-test_ipv6 ()
+test_fail_ipv6 ()
 {
   check_pass("http://[::1]";, "http", "[::1]", HTTP_DEFAULT_PORT, "");
   check_pass("http://[::1]/";, "http", "[::1]", HTTP_DEFAULT_PORT, "/");
@@ -173,9 +196,34 @@
   check_pass("http://[::1]:81/";, "http", "[::1]", 81, "/");
   check_pass("http://[::1]:81/path";, "http", "[::1]", 81, "/path");
   check_pass("http://[::1]:81/path/";, "http", "[::1]", 81, "/path/");
+  check_pass("http://[::1]:81/path/more";, "http", "[::1]", 81, "/path/more");
 }
 
 
+void
+test_fail ()
+{
+       if (GNUNET_SYSERR == check_fail (""))
+               GNUNET_break (0);
+       if (GNUNET_SYSERR == check_fail ("http"))
+               GNUNET_break (0);
+       if (GNUNET_SYSERR == check_fail ("://"))
+               GNUNET_break (0);
+       if (GNUNET_SYSERR == check_fail ("http://";))
+               GNUNET_break (0);
+       if (GNUNET_SYSERR == check_fail ("//localhost"))
+               GNUNET_break (0);
+       if (GNUNET_SYSERR == check_fail ("//:80"))
+               GNUNET_break (0);
+       if (GNUNET_SYSERR == check_fail ("//:80/"))
+               GNUNET_break (0);
+       if (GNUNET_SYSERR == check_fail ("//:80:"))
+               GNUNET_break (0);
+       if (GNUNET_SYSERR == check_fail ("http://localhost:a/";))
+               GNUNET_break (0);
+       if (GNUNET_SYSERR == check_fail ("http://127.0.0.1:a/";))
+               GNUNET_break (0);
+}
 
 int
 main (int argc, char *argv[])
@@ -205,9 +253,10 @@
        GNUNET_break (0);
   }
 
-  test_hostname ();
-  test_ipv4 ();
-  test_ipv6 ();
+  test_pass_hostname ();
+  test_pass_ipv4 ();
+  test_fail_ipv6 ();
+  test_fail ();
 
   return ret;
 }




reply via email to

[Prev in Thread] Current Thread [Next in Thread]