httpd-bugs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 41835] New: - smart filtering not working for some match arguments
Date Tue, 13 Mar 2007 22:52:25 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG·
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=41835>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND·
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=41835

           Summary: smart filtering not working for some match arguments
           Product: Apache httpd-2
           Version: 2.2.4
          Platform: Other
        OS/Version: All
            Status: NEW
          Severity: normal
          Priority: P2
         Component: mod_filter
        AssignedTo: bugs@httpd.apache.org
        ReportedBy: abercrombiegdl@hotmail.com


The provider for smart filtering is not being called when the match matches 
the value declared as dispatch for integer and unconditional arguments. ie, 
you have next directives in httpd.conf ->
SetEnv foo 99                                      
FilterProvider include INCLUDES env=foo <100              
FilterChain include
And the document including the shtml file won't display it.
>From mod_filter.c in filter_lookup() some changes need to be done.
See below an excerpt from the code that i modified
        if (!str) {
            // if (provider->match_type == DEFINED && provider->match.string)

{ /* THIS IS NOT ALWAYS TRUE SINCE match_type MAY BE A DIFFERENT TYPE */
                match = 0;
            //}
        }
        //else if (!provider->match.string) {	/* IS BETTER TO VERIFY NOT 
NULLS BELOW FOR provider->match.string AND provider->match.regex ONLY */
        //    match = 0;
        //}
        else {
            /* Now we have no nulls, so we can do string and regexp matching */
            switch (provider->match_type) {
            case STRING_MATCH:
                if (strcasecmp(str, provider->match.string)) {
                    match = 0;
                }
                break;
            case STRING_CONTAINS:
                str1 = apr_pstrdup(r->pool, str);
                ap_str_tolower(str1);
                if (!strstr(str1, provider->match.string)) {
                    match = 0;
                }
                break;
            case REGEX_MATCH:
                if (ap_regexec(provider->match.regex, str, 0, NULL, 0)
                    == AP_REG_NOMATCH) {
                match = 0;
                }
                break;
            case INT_EQ:
                if (atoi(str) != provider->match.number) {
                    match = 0;
                }
                break;
            case INT_LT:
                if (atoi(str) >= provider->match.number) { /* IF YOU CONSIDER 
match IS SET TO 1 AND ONLY WILL BE SET TO ZERO FOR FAIL CASES THEN INCOMING */
							   /* INTEGER MUST BE 
GREATHER-THAN OR EQUAL TO SPECIFIED NUMBER. IT MAKES SENSE AS YOU SEE BELOW */
							   /* FOR INT_EQ WHERE 
THE CONDITION IS != AND NOT == AND THIS APPLIES TO ALL NUMERIC COMPARISON. */
                    match = 0;
                }
                break;
            case INT_LE:
                if (atoi(str) > provider->match.number) {  /* REVERSE 
CONDITION */
                    match = 0;
                }
                break;
            case INT_GT:
                if (atoi(str) <= provider->match.number) {  /* REVERSE 
CONDITION */
                    match = 0;
                }
                break;
            case INT_GE:
                if (atoi(str) < provider->match.number) {  /* REVERSE 
CONDITION */
                    match = 0;
                }
                break;
            case DEFINED:        /* we already handled this:-) */
                break;
            }
        }

-- 
Configure bugmail: http://issues.apache.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.

---------------------------------------------------------------------
To unsubscribe, e-mail: bugs-unsubscribe@httpd.apache.org
For additional commands, e-mail: bugs-help@httpd.apache.org


Mime
View raw message