mirror of
https://github.com/cesanta/mongoose.git
synced 2026-10-31 13:00:49 +00:00
Stricter checks for mg_url_*()
This commit is contained in:
1 parent
0ae5c61759
commit
e9d122f231
6 files changed
+26
-12
No files matched your search
@@ -16,19 +16,19 @@ static struct url urlparse(const char *url) {
|
||||
struct url u;
|
||||
memset(&u, 0, sizeof(u));
|
||||
for (i = 0; url[i] != '\0'; i++) {
|
||||
if (i > 0 && url[i - 1] == '/' && url[i] == '/') {
|
||||
if (i > 0 && u.host == 0 && url[i - 1] == '/' && url[i] == '/') {
|
||||
u.host = i + 1;
|
||||
u.port = 0;
|
||||
} else if (url[i] == ']') {
|
||||
u.port = 0; // IPv6 URLs, like http://[::1]/bar
|
||||
} else if (url[i] == ':') {
|
||||
} else if (url[i] == ':' && u.port == 0) {
|
||||
u.port = i + 1;
|
||||
} else if (url[i] == '@') {
|
||||
} else if (url[i] == '@' && u.user == 0 && u.pass == 0) {
|
||||
u.user = u.host;
|
||||
u.pass = u.port;
|
||||
u.host = i + 1;
|
||||
u.port = 0;
|
||||
} else if (u.host && !u.uri && url[i] == '/') {
|
||||
} else if (u.host && u.uri == 0 && url[i] == '/') {
|
||||
u.uri = i;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user