From 440468a0dc885f550469507ba6c9b052b65dea5d Mon Sep 17 00:00:00 2001 From: Frerich Raabe Date: Fri, 24 Jan 2020 22:20:25 +0100 Subject: [PATCH 1/3] Adding test for decompose_uri parsing URI with empty port I'd expect the portnum component to remain uninitialized in case the given URI specifies no port number -- however, decompose_uri() raises an error instead. Will address this in a subsequent commit. --- testing/btest/Baseline/scripts.base.utils.urls/output | 1 + testing/btest/scripts/base/utils/urls.test | 1 + 2 files changed, 2 insertions(+) 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. From bb879fc2aac5d6fa60fbe6b598a2efb92eec8e80 Mon Sep 17 00:00:00 2001 From: Frerich Raabe Date: Fri, 24 Jan 2020 22:08:42 +0100 Subject: [PATCH 2/3] Fixed decompose_uri choking on URIs with empty port component A call such as decompose_uri("git://git.kernel.org:/pub/scm/linux/"); would raise an error along the lines of error in /usr/local/zeek-3.0.0/share/zeek/base/utils/urls.zeek, line 122: bad conversion to count (to_count(parts[1]) and ) This was because an empty string got passsed to the to_count() function. Let's improve the behaviour and rather consider the portnum component of the URI to be uninitialized. --- scripts/base/utils/urls.zeek | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 { From 4955356a52b6418f1297104bc14f32a3f0c8c81c Mon Sep 17 00:00:00 2001 From: Frerich Raabe Date: Fri, 24 Jan 2020 22:19:04 +0100 Subject: [PATCH 3/3] Document recent fix for decompose_uri in release notes --- NEWS | 5 +++++ 1 file changed, 5 insertions(+) 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 ---------------------