PATCHES ACCEPTED TO BACKPORT FROM TRUNK:
[ start all new proposals below, under PATCHES PROPOSED. ]
- *) Fix negotiation type parsing to be strict about "*", "*/*" and "type/*"
- comparisons.
- Submitted by: wrowe, Robert Święcki <robert swiecki.net>
- trunk patch: http://svn.apache.org/r1800917
- +1: wrowe, jim, jchampion
-
PATCHES PROPOSED TO BACKPORT FROM TRUNK:
[ New proposals should be added at the end of the list ]
const char *avail_type = avail->mime_type;
int len = strlen(accept_type);
- if (accept_type[0] == '*') { /* Anything matches star/star */
+ if ((len == 1 && accept_type[0] == '*')
+ || (len == 3 && !strncmp(accept_type, "*/*", 3))) {
+ /* Anything matches star or star/star */
if (avail->mime_stars < 1) {
avail->mime_stars = 1;
}
return 1;
}
- else if ((accept_type[len - 1] == '*') &&
- !strncmp(accept_type, avail_type, len - 2)) {
+ else if (len > 2 && accept_type[len - 2] == '/'
+ && accept_type[len - 1] == '*'
+ && !strncmp(accept_type, avail_type, len - 2)
+ && avail_type[len - 2] == '/') {
+ /* Any subtype matches for type/star */
if (avail->mime_stars < 2) {
avail->mime_stars = 2;
}