summaryrefslogtreecommitdiff
path: root/utils/nsurl.c
diff options
context:
space:
mode:
Diffstat (limited to 'utils/nsurl.c')
-rw-r--r--utils/nsurl.c34
1 files changed, 24 insertions, 10 deletions
diff --git a/utils/nsurl.c b/utils/nsurl.c
index 9faf311d7..20dc10632 100644
--- a/utils/nsurl.c
+++ b/utils/nsurl.c
@@ -192,6 +192,7 @@ static void nsurl__get_string_markers(const char const *url_s,
{
const char *pos = url_s; /** current position in url_s */
bool is_http = false;
+ bool trailing_whitespace = false;
/* Initialise marker set */
struct url_markers marker = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
@@ -363,18 +364,31 @@ static void nsurl__get_string_markers(const char const *url_s,
/* We got to the end of url_s.
* Need to skip back over trailing whitespace to find end of URL */
pos--;
- while (isspace(*pos))
- pos--;
+ if (isspace(*pos)) {
+ trailing_whitespace = true;
+ while (isspace(*pos))
+ pos--;
+ }
+
marker.end = pos + 1 - url_s;
- /* Ensure last url section doesn't pass end */
- if (marker.fragment > marker.end) marker.fragment = marker.end;
- if (marker.query > marker.end) marker.query = marker.end;
- if (marker.path > marker.end) marker.path = marker.end;
- if (marker.colon_last > marker.end) marker.colon_last = marker.end;
- if (marker.at > marker.end) marker.at = marker.end;
- if (marker.colon_last > marker.end) marker.colon_last = marker.end;
- if (marker.fragment > marker.end) marker.fragment = marker.end;
+ if (trailing_whitespace == true) {
+ /* Ensure last url section doesn't pass end */
+ if (marker.fragment > marker.end)
+ marker.fragment = marker.end;
+ if (marker.query > marker.end)
+ marker.query = marker.end;
+ if (marker.path > marker.end)
+ marker.path = marker.end;
+ if (marker.colon_last > marker.end)
+ marker.colon_last = marker.end;
+ if (marker.at > marker.end)
+ marker.at = marker.end;
+ if (marker.colon_last > marker.end)
+ marker.colon_last = marker.end;
+ if (marker.fragment > marker.end)
+ marker.fragment = marker.end;
+ }
/* Got all the URL components pegged out now */
*markers = marker;