diff --git a/sys/uri_parser/uri_parser.c b/sys/uri_parser/uri_parser.c index 228bc6d058..0a3c6ef43e 100644 --- a/sys/uri_parser/uri_parser.c +++ b/sys/uri_parser/uri_parser.c @@ -218,6 +218,17 @@ bool uri_parser_is_absolute(const char *uri, size_t uri_len) /* relative */ return false; } + for (int i = 0; &uri[i] < colon; ++i) { + if (!(((uri[i] >= 'A') && (uri[i] <= 'Z')) || + ((uri[i] >= 'a') && (uri[i] <= 'z')) || + ((uri[i] >= '0') && (uri[i] <= '9')) || + (uri[i] == '+') || + (uri[i] == '-') || + (uri[i] == '.'))) { + /* relative */ + return false; + } + } /* absolute */ return true;