From efe8a04c70f1dde3c62e88f514433515631db858 Mon Sep 17 00:00:00 2001 From: Warren Dukes Date: Wed, 2 Jun 2004 01:26:15 +0000 Subject: validate url's before adding to playlist git-svn-id: https://svn.musicpd.org/mpd/trunk@1289 09075e82-0dd4-0310-85a5-a0d7c8717e4f --- src/ls.c | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 7 deletions(-) (limited to 'src/ls.c') diff --git a/src/ls.c b/src/ls.c index 285874585..f477d7fa2 100644 --- a/src/ls.c +++ b/src/ls.c @@ -22,6 +22,7 @@ #include "path.h" #include "myfprintf.h" #include "log.h" +#include "utf8.h" #include #include @@ -41,17 +42,68 @@ char * dupAndStripPlaylistSuffix(char * file) { return ret; } -int isRemoteUrl(char * url) { - char * prefixes[] = { - "http://", - NULL - }; +static char * remoteUrlPrefixes[] = +{ + "http://", + NULL +}; + +int isValidRemoteUtf8Url(char * utf8url) { + int ret = 0; + char * lat1 = utf8StrToLatin1Dup(utf8url); + char * temp; + + if(!lat1) return 0; + + switch(isRemoteUrl(lat1)) { + case 1: + ret = 1; + temp = lat1; + while(*temp) { + if((*temp >= 'a' && *temp <= 'z') || + (*temp >= 'A' && *temp <= 'z') || + (*temp >= '0' && *temp <= '9') || + *temp == '$' || + *temp == '-' || + *temp == '.' || + *temp == '+' || + *temp == '!' || + *temp == '*' || + *temp == '\'' || + *temp == '(' || + *temp == ')' || + *temp == ',' || + *temp == '%' || + *temp == '/' || + *temp == ':' || + *temp == '?' || + *temp == ';' || + *temp == '&' || + *temp == '=') + { + } + else { + ret = 1; + break; + } + temp++; + } + break; + } + + free(lat1); + + return ret; +} - char ** urlPrefixes = prefixes; +int isRemoteUrl(char * url) { + int count = 0; + char ** urlPrefixes = remoteUrlPrefixes; while(*urlPrefixes) { + count++; if(strncmp(*urlPrefixes,url,strlen(*urlPrefixes)) == 0) { - return 1; + return count; } urlPrefixes++; } -- cgit v1.2.3