diff options
author | Yagiz Nizipli <yagiz@nizipli.com> | 2022-04-29 12:54:38 -0400 |
---|---|---|
committer | Rich Trott <rtrott@gmail.com> | 2022-05-01 13:27:37 -0700 |
commit | 87d0d7a069b2a3ca1db1dd592a62db4645ba5d69 (patch) | |
tree | d5bfe3eeb81859dc8cab726f5621fa90bfac19a2 /src/node_url.cc | |
parent | 3d0fc13ba374d539cfb9a70e44310877cb6f7ceb (diff) | |
download | node-new-87d0d7a069b2a3ca1db1dd592a62db4645ba5d69.tar.gz |
url: validate ipv4 part length
PR-URL: https://github.com/nodejs/node/pull/42915
Fixes: https://github.com/nodejs/node/issues/42914
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Diffstat (limited to 'src/node_url.cc')
-rw-r--r-- | src/node_url.cc | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/node_url.cc b/src/node_url.cc index b13c94f030..dbb51ef5ec 100644 --- a/src/node_url.cc +++ b/src/node_url.cc @@ -411,8 +411,11 @@ void URLHost::ParseIPv4Host(const char* input, size_t length, bool* is_ipv4) { const char ch = pointer < end ? pointer[0] : kEOL; int64_t remaining = end - pointer - 1; if (ch == '.' || ch == kEOL) { - if (++parts > static_cast<int>(arraysize(numbers))) + // If parts’s size is greater than 4, validation error, return failure. + if (++parts > static_cast<int>(arraysize(numbers))) { + *is_ipv4 = true; return; + } if (pointer == mark) return; int64_t n = ParseNumber(mark, pointer); |