summaryrefslogtreecommitdiff
path: root/src/node_url.cc
diff options
context:
space:
mode:
authorYagiz Nizipli <yagiz@nizipli.com>2022-04-29 12:54:38 -0400
committerRich Trott <rtrott@gmail.com>2022-05-01 13:27:37 -0700
commit87d0d7a069b2a3ca1db1dd592a62db4645ba5d69 (patch)
treed5bfe3eeb81859dc8cab726f5621fa90bfac19a2 /src/node_url.cc
parent3d0fc13ba374d539cfb9a70e44310877cb6f7ceb (diff)
downloadnode-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.cc5
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);