mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-12-06 19:41:15 +01:00
Do not consider IP strings valid DNS names. Fixes #25055
This commit is contained in:
+15
-8
@@ -100,6 +100,8 @@
|
||||
#undef MALLOC_ZERO_WORKS
|
||||
#endif
|
||||
|
||||
#include <ctype.h>
|
||||
|
||||
/* =====
|
||||
* Memory management
|
||||
* ===== */
|
||||
@@ -1110,16 +1112,21 @@ string_is_valid_hostname(const char *string)
|
||||
continue;
|
||||
}
|
||||
|
||||
do {
|
||||
if ((*c >= 'a' && *c <= 'z') ||
|
||||
(*c >= 'A' && *c <= 'Z') ||
|
||||
(*c >= '0' && *c <= '9') ||
|
||||
(*c == '-') || (*c == '_'))
|
||||
if (c_sl_idx == c_sl_len - 1) {
|
||||
do {
|
||||
result = isalpha(*c);
|
||||
c++;
|
||||
else
|
||||
result = 0;
|
||||
} while (result && *c);
|
||||
} while (result && *c);
|
||||
} else {
|
||||
do {
|
||||
result = (isalnum(*c) || (*c == '-') || (*c == '_'));
|
||||
c++;
|
||||
} while (result > 0 && *c);
|
||||
}
|
||||
|
||||
if (result == 0) {
|
||||
break;
|
||||
}
|
||||
} SMARTLIST_FOREACH_END(c);
|
||||
|
||||
SMARTLIST_FOREACH_BEGIN(components, char *, c) {
|
||||
|
||||
@@ -5584,6 +5584,11 @@ test_util_hostname_validation(void *arg)
|
||||
tt_assert(!string_is_valid_hostname("."));
|
||||
tt_assert(!string_is_valid_hostname(".."));
|
||||
|
||||
// IP address strings are not hostnames.
|
||||
tt_assert(!string_is_valid_hostname("8.8.8.8"));
|
||||
tt_assert(!string_is_valid_hostname("[2a00:1450:401b:800::200e]"));
|
||||
tt_assert(!string_is_valid_hostname("2a00:1450:401b:800::200e"));
|
||||
|
||||
done:
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user