>Number: 4240 >Category: mod_rewrite >Synopsis: -s pattern in RewriteCond does not work >Confidential: no >Severity: non-critical >Priority: medium >Responsible: apache >State: open >Class: sw-bug >Submitter-Id: apache >Arrival-Date: Tue Apr 13 12:20:01 PDT 1999 >Last-Modified: >Originator: [EMAIL PROTECTED] >Organization: apache >Release: 1.3.6 >Environment: BSD/OS jones.nas.com 2.1 BSDI BSD/OS 2.1 Kernel #0: Wed Mar 12 13:15:28 PST 1997 [EMAIL PROTECTED]:/usr/src/sys/compile/JONES i386 gcc version 2.7.2 >Description: The -s pattern in RewriteCond always returns not-matched, even if the file named by the TestString exists, is readable, and has non-zero size. >How-To-Repeat: Set up a RewriteCond using -s as a pattern that should match. For example, RewriteCond /bin/sh -s should always match (assuming /bin/sh exists), but never does. >Fix: It appears that apply_rewrite_cond in mod_rewrite.c looks for "-s " (with a trailing blank) instead of "-s". The following context diff fixes the problem:
*** apache_1.3.6/src/modules/standard/mod_rewrite.c~ Sun Mar 7 10:03:34 1999 --- apache_1.3.6/src/modules/standard/mod_rewrite.c Tue Apr 13 11:46:18 1999 *************** *** 2172,2178 **** } } } ! else if (strcmp(p->pattern, "-s ") == 0) { if (stat(input, &sb) == 0) { if (S_ISREG(sb.st_mode) && sb.st_size > 0) { rc = 1; --- 2172,2178 ---- } } } ! else if (strcmp(p->pattern, "-s") == 0) { if (stat(input, &sb) == 0) { if (S_ISREG(sb.st_mode) && sb.st_size > 0) { rc = 1; >Audit-Trail: >Unformatted: [In order for any reply to be added to the PR database, ] [you need to include <[EMAIL PROTECTED]> in the Cc line ] [and leave the subject line UNCHANGED. This is not done] [automatically because of the potential for mail loops. ] [If you do not include this Cc, your reply may be ig- ] [nored unless you are responding to an explicit request ] [from a developer. ] [Reply only with text; DO NOT SEND ATTACHMENTS! ]