diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2022-08-29 00:52:28 +0200 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2022-08-29 00:55:50 +0200 |
commit | 0f08037929376160d1aa43456791d12dcc5b3003 (patch) | |
tree | 2942a9906fda339f9a261c14700b320ca2ef3305 | |
parent | c7c151fe3a2700bcabfc07235176fcedf7e9b089 (diff) | |
download | slirp-0f08037929376160d1aa43456791d12dcc5b3003.zip slirp-0f08037929376160d1aa43456791d12dcc5b3003.tar.gz slirp-0f08037929376160d1aa43456791d12dcc5b3003.tar.bz2 |
Reject domain-search when any entry ends with ".."
rather than rejecting only when all of them are bogus.
Reported-by: Michael T <michael.gr220@gmail.com>
Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
-rw-r--r-- | src/dnssearch.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/dnssearch.c b/src/dnssearch.c index 55497e8..cbd1a19 100644 --- a/src/dnssearch.c +++ b/src/dnssearch.c @@ -263,15 +263,15 @@ int translate_dnssearch(Slirp *s, const char **names) for (i = 0; i < num_domains; i++) { domains[i].labels = outptr; domain_mklabels(domains + i, names[i]); + if (domains[i].len == 0) { + /* Bogus entry, reject it all */ + g_free(domains); + g_free(result); + return -1; + } outptr += domains[i].len; } - if (outptr == result) { - g_free(domains); - g_free(result); - return -1; - } - qsort(domains, num_domains, sizeof(*domains), domain_suffix_ord); domain_fixup_order(domains, num_domains); |