diff --git a/CHANGES b/CHANGES index c75e5db7ca..34809457c1 100644 --- a/CHANGES +++ b/CHANGES @@ -1,4 +1,8 @@ +3.1.0-dev.403 | 2020-01-24 15:15:04 -0800 + + * Fixed decompose_uri() errors on URIs with empty port component (Frerich Raabe) + 3.1.0-dev.398 | 2020-01-23 18:08:43 -0800 * Skip check for outdated docs in Cirrus CI for PRs (Jon Siwek, Corelight) diff --git a/NEWS b/NEWS index 772886070f..208fb89d5b 100644 --- a/NEWS +++ b/NEWS @@ -67,6 +67,11 @@ Changed Functionality previously used. Output from the formatters remains nearly identical. +- The ``decompose_uri`` function no longer raises an error when parsing + URIs with an empty port number (e.g. ``http://example.org:/``). Instead, + the ``portnum`` component of the returned ``URI`` value is left + uninitialized. + Removed Functionality --------------------- diff --git a/VERSION b/VERSION index d4ab5411c1..f0fca4b3d7 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -3.1.0-dev.398 +3.1.0-dev.403 diff --git a/scripts/base/utils/urls.zeek b/scripts/base/utils/urls.zeek index c6ec41cbfc..c8077f5424 100644 --- a/scripts/base/utils/urls.zeek +++ b/scripts/base/utils/urls.zeek @@ -119,7 +119,10 @@ function decompose_uri(uri: string): URI # Parse location and port. parts = split_string1(s, /:/); u$netlocation = parts[0]; - u$portnum = to_count(parts[1]); + if ( parts[1] != "" ) + { + u$portnum = to_count(parts[1]); + } } else { diff --git a/testing/btest/Baseline/scripts.base.utils.urls/output b/testing/btest/Baseline/scripts.base.utils.urls/output index 2d8f5b2c4d..e10010ab10 100644 --- a/testing/btest/Baseline/scripts.base.utils.urls/output +++ b/testing/btest/Baseline/scripts.base.utils.urls/output @@ -6,6 +6,7 @@ [scheme=http, netlocation=hyphen-example.com, portnum=, path=/index.asp, file_name=index.asp, file_base=index, file_ext=asp, params={ [q] = 123 }] +[scheme=git, netlocation=git.kernel.org, portnum=, path=/pub/scm/linux/, file_name=, file_base=, file_ext=, params=] [scheme=, netlocation=dfasjdfasdfasdf, portnum=, path=/, file_name=, file_base=, file_ext=, params={ }] diff --git a/testing/btest/scripts/base/utils/urls.test b/testing/btest/scripts/base/utils/urls.test index 666f805edb..c307ee601e 100644 --- a/testing/btest/scripts/base/utils/urls.test +++ b/testing/btest/scripts/base/utils/urls.test @@ -8,6 +8,7 @@ print decompose_uri("https://www.example.com/"); print decompose_uri("http://example.com:99/test//?foo=bar"); print decompose_uri("ftp://1.2.3.4/pub/files/something.exe"); print decompose_uri("http://hyphen-example.com/index.asp?q=123"); +print decompose_uri("git://git.kernel.org:/pub/scm/linux/"); # This is mostly undefined behavior but it doesn't give any # reporter messages at least.