* Properly escape double quotes.

This commit is contained in:
Justin Maggard 2012-02-13 23:07:40 +00:00
parent 996b373f83
commit 774d8f9f6e
2 changed files with 6 additions and 24 deletions

View File

@ -1392,20 +1392,6 @@ SearchContentDirectory(struct upnphttp * h, const char * action)
args.flags |= FLAG_FREE_OBJECT_ID; args.flags |= FLAG_FREE_OBJECT_ID;
} }
} }
#if 0 // Looks like the 360 already does this
/* Sort by track number for some containers */
if( orderBy &&
((strncmp(ContainerID, MUSIC_GENRE_ID, 3) == 0) ||
(strncmp(ContainerID, MUSIC_ARTIST_ID, 3) == 0) ||
(strncmp(ContainerID, MUSIC_ALBUM_ID, 3) == 0)) )
{
DPRINTF(E_DEBUG, L_HTTP, "Old sort order: %s\n", orderBy);
sprintf(str_buf, "d.TRACK, ");
memmove(orderBy+18, orderBy+9, strlen(orderBy)+1);
memmove(orderBy+9, &str_buf, 9);
DPRINTF(E_DEBUG, L_HTTP, "New sort order: %s\n", orderBy);
}
#endif
} }
DPRINTF(E_DEBUG, L_HTTP, "Searching ContentDirectory:\n" DPRINTF(E_DEBUG, L_HTTP, "Searching ContentDirectory:\n"
" * ObjectID: %s\n" " * ObjectID: %s\n"
@ -1432,7 +1418,6 @@ SearchContentDirectory(struct upnphttp * h, const char * action)
SearchCriteria = modifyString(SearchCriteria, "'", "'", 0); SearchCriteria = modifyString(SearchCriteria, "'", "'", 0);
SearchCriteria = modifyString(SearchCriteria, "&lt;", "<", 0); SearchCriteria = modifyString(SearchCriteria, "&lt;", "<", 0);
SearchCriteria = modifyString(SearchCriteria, "&gt;", ">", 0); SearchCriteria = modifyString(SearchCriteria, "&gt;", ">", 0);
SearchCriteria = modifyString(SearchCriteria, "\\\"", "\"\"", 0);
SearchCriteria = modifyString(SearchCriteria, "object.", "", 0); SearchCriteria = modifyString(SearchCriteria, "object.", "", 0);
SearchCriteria = modifyString(SearchCriteria, "derivedfrom", "like", 1); SearchCriteria = modifyString(SearchCriteria, "derivedfrom", "like", 1);
SearchCriteria = modifyString(SearchCriteria, "contains", "like", 2); SearchCriteria = modifyString(SearchCriteria, "contains", "like", 2);
@ -1458,16 +1443,12 @@ SearchContentDirectory(struct upnphttp * h, const char * action)
newSearchCriteria = strdup(SearchCriteria); newSearchCriteria = strdup(SearchCriteria);
SearchCriteria = newSearchCriteria = modifyString(newSearchCriteria, "res is ", "MIME is ", 0); SearchCriteria = newSearchCriteria = modifyString(newSearchCriteria, "res is ", "MIME is ", 0);
} }
#if 0 // Does 360 need this? if( strstr(SearchCriteria, "\\\"") )
if( strstr(SearchCriteria, "&amp;") )
{ {
if( newSearchCriteria ) if( !newSearchCriteria )
newSearchCriteria = modifyString(newSearchCriteria, "&amp;", "&amp;amp;", 0); newSearchCriteria = strdup(SearchCriteria);
else SearchCriteria = newSearchCriteria = modifyString(newSearchCriteria, "\\\"", "&amp;quot;", 0);
newSearchCriteria = modifyString(strdup(SearchCriteria), "&amp;", "&amp;amp;", 0);
SearchCriteria = newSearchCriteria;
} }
#endif
} }
DPRINTF(E_DEBUG, L_HTTP, "Translated SearchCriteria: %s\n", SearchCriteria); DPRINTF(E_DEBUG, L_HTTP, "Translated SearchCriteria: %s\n", SearchCriteria);

View File

@ -182,12 +182,13 @@ escape_tag(const char *tag, int force_alloc)
{ {
char *esc_tag = NULL; char *esc_tag = NULL;
if( strchr(tag, '&') || strchr(tag, '<') || strchr(tag, '>') ) if( strchr(tag, '&') || strchr(tag, '<') || strchr(tag, '>') || strchr(tag, '"') )
{ {
esc_tag = strdup(tag); esc_tag = strdup(tag);
esc_tag = modifyString(esc_tag, "&", "&amp;amp;", 0); esc_tag = modifyString(esc_tag, "&", "&amp;amp;", 0);
esc_tag = modifyString(esc_tag, "<", "&amp;lt;", 0); esc_tag = modifyString(esc_tag, "<", "&amp;lt;", 0);
esc_tag = modifyString(esc_tag, ">", "&amp;gt;", 0); esc_tag = modifyString(esc_tag, ">", "&amp;gt;", 0);
esc_tag = modifyString(esc_tag, "\"", "&amp;quot;", 0);
} }
else if( force_alloc ) else if( force_alloc )
esc_tag = strdup(tag); esc_tag = strdup(tag);