diff options
author | Vincent Sanders <vince@kyllikki.org> | 2014-10-25 23:06:18 +0100 |
---|---|---|
committer | Vincent Sanders <vince@kyllikki.org> | 2014-10-25 23:07:00 +0100 |
commit | e39606c411bad57de5891965628f6ac278df42ee (patch) | |
tree | 697c5404c0a9bbe616bada833db7bb52df9bd778 /utils/url.c | |
parent | df89f689f7ddcb082b4616c6e32cabbb859b3a11 (diff) | |
download | netsurf-e39606c411bad57de5891965628f6ac278df42ee.tar.gz netsurf-e39606c411bad57de5891965628f6ac278df42ee.tar.bz2 |
make regex wrapper return errors instead of just aborting
Diffstat (limited to 'utils/url.c')
-rw-r--r-- | utils/url.c | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/utils/url.c b/utils/url.c index 37fa93967..949478efb 100644 --- a/utils/url.c +++ b/utils/url.c @@ -44,10 +44,12 @@ struct url_components_internal { regex_t url_re, url_up_re; /* exported interface documented in utils/url.h */ -void url_init(void) +nserror url_init(void) { + nserror ret; + /* regex from RFC 2396 */ - regcomp_wrapper(&url_re, "^[[:space:]]*" + ret = regcomp_wrapper(&url_re, "^[[:space:]]*" #define URL_RE_SCHEME 2 "(([a-zA-Z][-a-zA-Z0-9+.]*):)?" #define URL_RE_AUTHORITY 4 @@ -59,7 +61,11 @@ void url_init(void) #define URL_RE_FRAGMENT 9 "(#([^[:space:]]*))?" "[[:space:]]*$", REG_EXTENDED); - regcomp_wrapper(&url_up_re, + if (ret != NSERROR_OK) { + return ret; + } + + return regcomp_wrapper(&url_up_re, "/([^/]?|[.][^./]|[^./][.]|[^./][^./]|[^/][^/][^/]+)" "/[.][.](/|$)", REG_EXTENDED); |