diff --git a/uri/sc_uri.c b/uri/sc_uri.c index 4c0ce36..700ef71 100644 --- a/uri/sc_uri.c +++ b/uri/sc_uri.c @@ -94,7 +94,7 @@ struct sc_uri *sc_uri_create(const char *str) errno = 0; val = strtoul(ptr + 1, &parse_end, 10); - if (errno != 0 || val > 65536) { + if (errno != 0 || val > 65535) { return NULL; } diff --git a/uri/uri_test.c b/uri/uri_test.c index cfbb21f..f29ca99 100644 --- a/uri/uri_test.c +++ b/uri/uri_test.c @@ -246,12 +246,22 @@ void test13(void) const char *f = "foo://user:password@example.com:-1/over/there?x#3"; const char *f2 = "foo://user:password@example.com:100000/over/" "there?x#3"; + const char *f3 = "foo://example.com:65535"; + const char *f4 = "foo://example.com:65536"; uri = sc_uri_create(f); assert(uri == NULL); uri = sc_uri_create(f2); assert(uri == NULL); + + uri = sc_uri_create(f3); + assert(uri != NULL); + assert(strcmp(uri->port, "65535") == 0); + sc_uri_destroy(uri); + + uri = sc_uri_create(f4); + assert(uri == NULL); } #ifdef SC_HAVE_WRAP