akosut 96/08/19 10:54:53
Modified: src util.c Log: Fix backslash-quoting in getword_conf() Reviewed by: Roy T. Fielding, Someone Else (I forget who, exactly) Revision Changes Path 1.16 +8 -7 apache/src/util.c Index: util.c =================================================================== RCS file: /export/home/cvs/apache/src/util.c,v retrieving revision 1.15 retrieving revision 1.16 diff -C3 -r1.15 -r1.16 *** util.c 1996/07/29 02:32:34 1.15 --- util.c 1996/08/19 17:54:52 1.16 *************** *** 458,471 **** * all honored */ ! char *substring_conf (pool *p, char *start, int len) { char *result = palloc (p, len + 2); char *resp = result; int i; for (i = 0; i < len; ++i) { ! if (start[i] == '\\') *resp++ = start[++i]; else *resp++ = start[i]; --- 458,472 ---- * all honored */ ! char *substring_conf (pool *p, char *start, int len, char quote) { char *result = palloc (p, len + 2); char *resp = result; int i; for (i = 0; i < len; ++i) { ! if (start[i] == '\\' && (start[i+1] == '/' ! || (quote && start[i+1] == quote))) *resp++ = start[++i]; else *resp++ = start[i]; *************** *** 490,508 **** if ((quote = *str) == '"' || quote == '\'') { strend = str + 1; while (*strend && *strend != quote) { ! if (*strend == '\\' && strend[1]) strend += 2; else ++strend; } ! res = substring_conf (p, str + 1, strend - str - 1); if (*strend == quote) ++strend; } else { strend = str; while (*strend && !isspace (*strend)) ! if (*strend == '\\' && strend[1]) strend += 2; ! else ++strend; ! res = substring_conf (p, str, strend - str); } while (*strend && isspace(*strend)) ++ strend; --- 491,509 ---- if ((quote = *str) == '"' || quote == '\'') { strend = str + 1; while (*strend && *strend != quote) { ! if (*strend == '\\' && strend[1] && strend[1] == quote) ! strend += 2; else ++strend; } ! res = substring_conf (p, str + 1, strend - str - 1, quote); if (*strend == quote) ++strend; } else { strend = str; while (*strend && !isspace (*strend)) ! ++strend; ! res = substring_conf (p, str, strend - str, 0); } while (*strend && isspace(*strend)) ++ strend;