marc 97/02/17 02:46:09
Modified: src http_core.c http_request.c http_core.h Log: Fix the hierarchical passing of satisfy modes; before a .htaccess file could make the satisfy mode revert back to Satisfy All even if there were no authentication directives in the directory. Submitted by: Ed Korthof Reviewed by: Paul Sutton, Dean Gaudet, Marc Slemko Revision Changes Path 1.70 +2 -2 apache/src/http_core.c Index: http_core.c =================================================================== RCS file: /export/home/cvs/apache/src/http_core.c,v retrieving revision 1.69 retrieving revision 1.70 diff -C3 -r1.69 -r1.70 *** http_core.c 1997/02/15 11:33:51 1.69 --- http_core.c 1997/02/17 10:46:06 1.70 *************** *** 94,100 **** conf->hostname_lookups = 2;/* binary, but will use 2 as an "unset = on" */ conf->do_rfc1413 = DEFAULT_RFC1413 | 2; /* set bit 1 to indicate default */ ! conf->satisfy = SATISFY_ALL; #ifdef RLIMIT_CPU conf->limit_cpu = NULL; --- 94,100 ---- conf->hostname_lookups = 2;/* binary, but will use 2 as an "unset = on" */ conf->do_rfc1413 = DEFAULT_RFC1413 | 2; /* set bit 1 to indicate default */ ! conf->satisfy = SATISFY_NOSPEC; #ifdef RLIMIT_CPU conf->limit_cpu = NULL; *************** *** 165,171 **** conf->sec = append_arrays (a, base->sec, new->sec); ! conf->satisfy = new->satisfy; return (void*)conf; } --- 165,171 ---- conf->sec = append_arrays (a, base->sec, new->sec); ! if (new->satisfy != SATISFY_NOSPEC) conf->satisfy = new->satisfy; return (void*)conf; } 1.43 +3 -3 apache/src/http_request.c Index: http_request.c =================================================================== RCS file: /export/home/cvs/apache/src/http_request.c,v retrieving revision 1.42 retrieving revision 1.43 diff -C3 -r1.42 -r1.43 *** http_request.c 1997/02/10 15:17:44 1.42 --- http_request.c 1997/02/17 10:46:07 1.43 *************** *** 658,664 **** if ((res = directory_walk (rnew)) || (res = file_walk (rnew)) || (res = location_walk (rnew)) ! || (satisfies(rnew) == SATISFY_ALL? ((res = check_access (rnew)) || (some_auth_required (rnew) && ((res = check_user_id (rnew)) || (res = check_auth (rnew))))): --- 658,664 ---- if ((res = directory_walk (rnew)) || (res = file_walk (rnew)) || (res = location_walk (rnew)) ! || ((satisfies(rnew)==SATISFY_ALL || satisfies(rnew)==SATISFY_NOSPEC)? ((res = check_access (rnew)) || (some_auth_required (rnew) && ((res = check_user_id (rnew)) || (res = check_auth (rnew))))): *************** *** 707,713 **** if ((res = directory_walk (rnew)) || (res = file_walk (rnew)) ! || (satisfies(rnew) == SATISFY_ALL? ((res = check_access (rnew)) || (some_auth_required (rnew) && ((res = check_user_id (rnew)) || (res = check_auth (rnew))))): --- 707,713 ---- if ((res = directory_walk (rnew)) || (res = file_walk (rnew)) ! || ((satisfies(rnew)==SATISFY_ALL || satisfies(rnew)==SATISFY_NOSPEC)? ((res = check_access (rnew)) || (some_auth_required (rnew) && ((res = check_user_id (rnew)) || (res = check_auth (rnew))))): *************** *** 916,922 **** } switch (satisfies(r)) { ! case SATISFY_ALL: if ((access_status = check_access (r)) != 0) { decl_die (access_status, "check access", r); return; --- 916,922 ---- } switch (satisfies(r)) { ! case SATISFY_ALL: case SATISFY_NOSPEC: if ((access_status = check_access (r)) != 0) { decl_die (access_status, "check access", r); return; 1.20 +1 -0 apache/src/http_core.h Index: http_core.h =================================================================== RCS file: /export/home/cvs/apache/src/http_core.h,v retrieving revision 1.19 retrieving revision 1.20 diff -C3 -r1.19 -r1.20 *** http_core.h 1997/02/10 15:17:43 1.19 --- http_core.h 1997/02/17 10:46:07 1.20 *************** *** 80,85 **** --- 80,86 ---- #define SATISFY_ALL 0 #define SATISFY_ANY 1 + #define SATISFY_NOSPEC 2 int allow_options (request_rec *); int allow_overrides (request_rec *);