diff options
author | epochqwert <epoch@hacking.allowed.org> | 2018-08-06 23:12:29 +0000 |
---|---|---|
committer | epochqwert <epoch@hacking.allowed.org> | 2018-08-06 23:12:29 +0000 |
commit | afdc9966f1bade4b99b7c938c6a684d75a12dff2 (patch) | |
tree | 698d9209eae9475185884e99229b547dfc54e41a /url.h | |
parent | 8b7632d0ae0834cd1de94364a759ab2b76423595 (diff) | |
download | uritools-afdc9966f1bade4b99b7c938c6a684d75a12dff2.tar.gz uritools-afdc9966f1bade4b99b7c938c6a684d75a12dff2.zip |
fixed a use of a variable where it might have not been defined and made a decimal check of port that should handle more URL types in a more sane way
Diffstat (limited to 'url.h')
-rw-r--r-- | url.h | 27 |
1 files changed, 23 insertions, 4 deletions
@@ -114,6 +114,23 @@ void urlfromline(struct url *u,char *line) { } } } + if(u->port) { + for(i=0;u->port[i];i++) { + if(u->port[i] < '0' || u->port[i] > '9') { + //this port number isn't a number! + //it is probably a different portion of the url then... and the domain is probably the scheme. + if(u->domain && !u->scheme) { + u->scheme=u->domain; + u->domain=0; + } + if(!u->path) { + u->path=u->port; + u->port=0; + } + break; + } + } + } if(u->domain) {//for magnet links. if(strchr(u->domain,'?')) { @@ -123,10 +140,12 @@ void urlfromline(struct url *u,char *line) { } } - if(strchr(u->domain,':') && !strchr(u->domain,']')) {//for scheme:?query_string - u->scheme=u->domain; - *strchr(u->scheme,':')=0; - u->domain=0; + if(u->domain) { + if(strchr(u->domain,':') && !strchr(u->domain,']')) {//for scheme:?query_string + u->scheme=u->domain; + *strchr(u->scheme,':')=0; + u->domain=0; + } } if(!u->scheme && u->username) {//for mailto: |