expcov report - Generated Sat Oct 15 21:39:18 2016

 Index  Statistics  Last 
Directory./server
Filenamerequest.c
ModifiedWed Aug 22 02:45:59 2012

Pass Half Fail Excluded Total
Function
0
0.00%
19
100.00%
0
0.00%
19
100%
Expressions
0
0.00%
990
100.00%
0
0.00%
990
100%
Conditions
0
0.00%
0
0.00%
214
100.00%
0
0.00%
214
100%
MC/DC
0
0.00%
99
100.00%
0
0.00%
99
100%
Branches

if
0
0.00%
0
0.00%
158
100.00%
0
0.00%
158
100%
for
0
0.00%
0
0.00%
5
100.00%
0
0.00%
5
100%
while
0
0.00%
0
0.00%
2
100.00%
0
0.00%
2
100%
case
0
0.00%
0
0.00%
3
100.00%
0
0.00%
3
100%

1/* Licensed to the Apache Software Foundation (ASF) under one or more
2 * contributor license agreements.  See the NOTICE file distributed with
3 * this work for additional information regarding copyright ownership.
4 * The ASF licenses this file to You under the Apache License, Version 2.0
5 * (the "License"); you may not use this file except in compliance with
6 * the License.  You may obtain a copy of the License at
7 *
8 *     http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17/*
18 * @file  request.c
19 * @brief functions to get and process requests
20 *
21 * @author Rob McCool 3/21/93
22 *
23 * Thoroughly revamped by rst for Apache.  NB this file reads
24 * best from the bottom up.
25 *
26 */
27
28#include "apr_strings.h"
29#include "apr_file_io.h"
30#include "apr_fnmatch.h"
31
32#define APR_WANT_STRFUNC
33#include "apr_want.h"
34
35#define CORE_PRIVATE
36#include "ap_config.h"
37#include "httpd.h"
38#include "http_config.h"
39#include "http_request.h"
40#include "http_core.h"
41#include "http_protocol.h"
42#include "http_log.h"
43#include "http_main.h"
44#include "util_filter.h"
45#include "util_charset.h"
46#include "util_script.h"
47
48#include "mod_core.h"
49
50#if APR_HAVE_STDARG_H
51#include <stdarg.h>
52#endif
53
54APR_HOOK_STRUCT(
55    APR_HOOK_LINK(translate_name)
56    APR_HOOK_LINK(map_to_storage)
57    APR_HOOK_LINK(check_user_id)
58    APR_HOOK_LINK(fixups)
59    APR_HOOK_LINK(type_checker)
60    APR_HOOK_LINK(access_checker)
61    APR_HOOK_LINK(auth_checker)
62    APR_HOOK_LINK(insert_filter)
63    APR_HOOK_LINK(create_request)
64)
65
66AP_IMPLEMENT_HOOK_RUN_FIRST(int,translate_name,
67                            (request_rec *r), (r : server/request.c line=67 column=43
r
), DECLINED)
68AP_IMPLEMENT_HOOK_RUN_FIRST(int,map_to_storage,
69                            (request_rec *r), (r : server/request.c line=69 column=43
r
), DECLINED)
70AP_IMPLEMENT_HOOK_RUN_FIRST(int,check_user_id,
71                            (request_rec *r), (r : server/request.c line=71 column=43
r
), DECLINED)
72AP_IMPLEMENT_HOOK_RUN_ALL(int,fixups,
73                          (request_rec *r), (r : server/request.c line=73 column=41
r
), OK, DECLINED)
74AP_IMPLEMENT_HOOK_RUN_FIRST(int,type_checker,
75                            (request_rec *r), (r : server/request.c line=75 column=43
r
), DECLINED)
76AP_IMPLEMENT_HOOK_RUN_ALL(int,access_checker,
77                          (request_rec *r), (r : server/request.c line=77 column=41
r
), OK, DECLINED)
78AP_IMPLEMENT_HOOK_RUN_FIRST(int,auth_checker,
79                            (request_rec *r), (r : server/request.c line=79 column=43
r
), DECLINED)
80AP_IMPLEMENT_HOOK_VOID(insert_filter, (request_rec *r), (r : server/request.c line=80 column=53
r
))
81AP_IMPLEMENT_HOOK_RUN_ALL(int, create_request,
82                          (request_rec *r), (r : server/request.c line=82 column=41
r
), OK, DECLINED)
83
84
85static int decl_die : call=0
d
ecl_die(int status, char *phase, request_rec *r)
86{
87    if : true=0, false=0
i
f (status : server/request.c line=85 column=25
s
tatus == : true=0, false=0
=
= DECLINED) {
88        ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_CRIT, 0, r : server/request.c line=85 column=59
r
,
89                      "configuration error:  couldn't %s: %s", phase : server/request.c line=85 column=39
p
hase, r : server/request.c line=85 column=59
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
90        return : pass=0
r
eturn HTTP_INTERNAL_SERVER_ERROR;
91    }
92    else {
93        return : pass=0
r
eturn status : server/request.c line=85 column=25
s
tatus;
94    }
95}
96
97/* This is the master logic for processing requests.  Do NOT duplicate
98 * this logic elsewhere, or the security model will be broken by future
99 * API changes.  Each phase must be individually optimized to pick up
100 * redundant/duplicate calls by subrequests, and redirects.
101 */
102AP_DECLARE(int) ap_process_request_internal : call=0
a
p_process_request_internal(request_rec *r)
103{
104    int file_req = (r : server/request.c line=102 column=58
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>main : include/httpd.h line=793 column=18
m
ain && : true=0, false=0
&
r : server/request.c line=102 column=58
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>filename : include/httpd.h line=948 column=11
f
ilename);
105    int access_status;
106
107    /* Ignore embedded %2F's in path for proxy requests */
108    if : true=0, false=0
i
f (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>proxyreq : include/httpd.h line=806 column=9
p
roxyreq && : true=0, false=0
&
r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>parsed_uri : include/httpd.h line=959 column=15
p
arsed_uriMC/DC independently affect : true=0, false=0
.TF
path : /usr/include/apr-1/apr_uri.h line=99 column=11 path) {
109        core_dir_config *d;
110        d : server/request.c line=109 column=26
d
 = : pass=0
=
 ap_get_module_config(r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config, &core_module : include/http_core.h line=345 column=31
c
ore_module);
111        if : true=0, false=0
i
f (d : server/request.c line=109 column=26
d
-> : enter=0, leave=0
-
>allow_encoded_slashes : include/http_core.h line=572 column=18
a
llow_encoded_slashes) {
112            access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_unescape_url_keep2f_ex : enter=0, leave=0

ap_unescape_url_keep2f_ex : include/httpd.h line=1470 column=17
a
p_unescape_url_keep2f_ex(r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>parsed_uri : include/httpd.h line=959 column=15
p
arsed_uri.path : /usr/include/apr-1/apr_uri.h line=99 column=11 path, d : server/request.c line=109 column=26
d
-> : enter=0, leave=0
-
>decode_encoded_slashes : include/http_core.h line=581 column=18
d
ecode_encoded_slashes);
113        }
114        else {
115            access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_unescape_url : enter=0, leave=0

ap_unescape_url : include/httpd.h line=1455 column=17
a
p_unescape_url(r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>parsed_uri : include/httpd.h line=959 column=15
p
arsed_uri.path : /usr/include/apr-1/apr_uri.h line=99 column=11 path);
116        }
117        if : true=0, false=0
i
f (access_status : server/request.c line=105 column=9
a
ccess_status) {
118            if : true=0, false=0
i
f (access_status : server/request.c line=105 column=9
a
ccess_status == : true=0, false=0
=
= HTTP_NOT_FOUND) {
119                if : true=0, false=0
i
f (! : true=0, false=0
!
 d : server/request.c line=109 column=26
d
-> : enter=0, leave=0
-
>allow_encoded_slashes : include/http_core.h line=572 column=18
a
llow_encoded_slashes) {
120                    ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_INFO, 0, r : server/request.c line=102 column=58
r
,
121                                  "found %%2f (encoded '/') in URI "
122                                  "(decoded='%s'), returning 404",
123                                  r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>parsed_uri : include/httpd.h line=959 column=15
p
arsed_uri.path : /usr/include/apr-1/apr_uri.h line=99 column=11 path);
124                }
125            }
126            return : pass=0
r
eturn access_status : server/request.c line=105 column=9
a
ccess_status;
127        }
128    }
129
130    ap_getparents : enter=0, leave=0

ap_getparents : include/httpd.h line=1483 column=18
a
p_getparents(r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);     /* OK --- shrinking transformations... */
131
132    /* All file subrequests are a huge pain... they cannot bubble through the
133     * next several steps.  Only file subrequests are allowed an empty uri,
134     * otherwise let translate_name kill the request.
135     */
136    if : true=0, false=0
i
f (! : true=0, false=0
!
file_req : server/request.c line=104 column=9
f
ile_req) {
137        if : true=0, false=0
i
f ((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_location_walk : enter=0, leave=0

ap_location_walk : include/http_request.h line=353 column=17
a
p_location_walk(r : server/request.c line=102 column=58
r
))) {
138            return : pass=0
r
eturn access_status : server/request.c line=105 column=9
a
ccess_status;
139        }
140
141        if : true=0, false=0
i
f ((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_run_translate_name : enter=0, leave=0

ap_run_translate_name : server/ line=67 column=1
a
p_run_translate_name(r : server/request.c line=102 column=58
r
))) {
142            return : pass=0
r
eturn decl_die : enter=0, leave=0

decl_die : server/request.c line=85 column=12
d
ecl_die(access_status : server/request.c line=105 column=9
a
ccess_status, "translate", r : server/request.c line=102 column=58
r
);
143        }
144    }
145
146    /* Reset to the server default config prior to running map_to_storage
147     */
148    r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config = : enter=0, leave=0
=
 r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>lookup_defaults : include/httpd.h line=1209 column=30
l
ookup_defaults;
149
150    if : true=0, false=0
i
f ((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_run_map_to_storage : enter=0, leave=0

ap_run_map_to_storage : server/ line=67 column=1
a
p_run_map_to_storage(r : server/request.c line=102 column=58
r
))) {
151        /* This request wasn't in storage (e.g. TRACE) */
152        return : pass=0
r
eturn access_status : server/request.c line=105 column=9
a
ccess_status;
153    }
154
155    /* Rerun the location walk, which overrides any map_to_storage config.
156     */
157    if : true=0, false=0
i
f ((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_location_walk : enter=0, leave=0

ap_location_walk : include/http_request.h line=353 column=17
a
p_location_walk(r : server/request.c line=102 column=58
r
))) {
158        return : pass=0
r
eturn access_status : server/request.c line=105 column=9
a
ccess_status;
159    }
160
161    /* Only on the main request! */
162    if : true=0, false=0
i
f (r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>main : include/httpd.h line=793 column=18
m
ain == : true=0, false=0
=
= NULL) {
163        if : true=0, false=0
i
f ((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_run_header_parser : enter=0, leave=0

ap_run_header_parser : server/ line=134 column=1
a
p_run_header_parser(r : server/request.c line=102 column=58
r
))) {
164            return : pass=0
r
eturn access_status : server/request.c line=105 column=9
a
ccess_status;
165        }
166    }
167
168    /* Skip authn/authz if the parent or prior request passed the authn/authz,
169     * and that configuration didn't change (this requires optimized _walk()
170     * functions in map_to_storage that use the same merge results given
171     * identical input.)  If the config changes, we must re-auth.
172     */
173    if : true=0, false=0
i
f (r : server/request.c line=102 column=58
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>main : include/httpd.h line=793 column=18
m
ain && : true=0, false=0
&
& (r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>main : include/httpd.h line=793 column=18
m
ain-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config)) {
174        r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>user : include/httpd.h line=930 column=11
u
ser = : enter=0, leave=0
=
 r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>main : include/httpd.h line=793 column=18
m
ain-> : enter=0, leave=0
-
>user : include/httpd.h line=930 column=11
u
ser;
175        r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>ap_auth_type : include/httpd.h line=932 column=11
a
p_auth_type = : enter=0, leave=0
=
 r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>main : include/httpd.h line=793 column=18
m
ain-> : enter=0, leave=0
-
>ap_auth_type : include/httpd.h line=932 column=11
a
p_auth_type;
176    }
177    else if : true=0, false=0
i
f (r : server/request.c line=102 column=58
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>prev : include/httpd.h line=789 column=18
p
rev && : true=0, false=0
&
& (r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config)) {
178        r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>user : include/httpd.h line=930 column=11
u
ser = : enter=0, leave=0
=
 r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev-> : enter=0, leave=0
-
>user : include/httpd.h line=930 column=11
u
ser;
179        r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>ap_auth_type : include/httpd.h line=932 column=11
a
p_auth_type = : enter=0, leave=0
=
 r : server/request.c line=102 column=58
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev-> : enter=0, leave=0
-
>ap_auth_type : include/httpd.h line=932 column=11
a
p_auth_type;
180    }
181    else {
182        switch : pass=0
s
witch (ap_satisfies : enter=0, leave=0

ap_satisfies : include/http_core.h line=329 column=17
a
p_satisfies(r : server/request.c line=102 column=58
r
)) {
183        case : true=0, false=0
c
ase SATISFY_ALL:
184        case : true=0, false=0
c
ase SATISFY_NOSPEC:
185            if : true=0, false=0
i
f ((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_run_access_checker : enter=0, leave=0

ap_run_access_checker : server/ line=4 column=1
a
p_run_access_checker(r : server/request.c line=102 column=58
r
)) != : true=0, false=0
!
= 0) {
186                return : pass=0
r
eturn decl_die : enter=0, leave=0

decl_die : server/request.c line=85 column=12
d
ecl_die(access_status : server/request.c line=105 column=9
a
ccess_status, "check access", r : server/request.c line=102 column=58
r
);
187            }
188
189            if : true=0, false=0
i
f (ap_some_auth_required : enter=0, leave=0

ap_some_auth_required : include/http_request.h line=183 column=17
a
p_some_auth_required(r : server/request.c line=102 column=58
r
)) {
190                if : true=0, false=0
i
f (((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_run_check_user_id : enter=0, leave=0

ap_run_check_user_id : server/ line=67 column=1
a
p_run_check_user_id(r : server/request.c line=102 column=58
r
)) != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= 0)
191                    || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
ap_auth_type : enter=0, leave=0

ap_auth_type : include/http_core.h line=310 column=26
a
p_auth_type(r : server/request.c line=102 column=58
r
)) {
192                    return : pass=0
r
eturn decl_die : enter=0, leave=0

decl_die : server/request.c line=85 column=12
d
ecl_die(access_status : server/request.c line=105 column=9
a
ccess_status, ap_auth_type : enter=0, leave=0

ap_auth_type : include/http_core.h line=310 column=26
a
p_auth_type(r : server/request.c line=102 column=58
r
)
193                                  conditional operator : true=0, false=0
?
 "check user.  Check your authn provider!"
194                                  : "perform authentication. AuthType not set!",
195                                  r : server/request.c line=102 column=58
r
);
196                }
197
198                if : true=0, false=0
i
f (((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_run_auth_checker : enter=0, leave=0

ap_run_auth_checker : server/ line=4 column=1
a
p_run_auth_checker(r : server/request.c line=102 column=58
r
)) != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= 0)
199                    || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
ap_auth_type : enter=0, leave=0

ap_auth_type : include/http_core.h line=310 column=26
a
p_auth_type(r : server/request.c line=102 column=58
r
)) {
200                    return : pass=0
r
eturn decl_die : enter=0, leave=0

decl_die : server/request.c line=85 column=12
d
ecl_die(access_status : server/request.c line=105 column=9
a
ccess_status, ap_auth_type : enter=0, leave=0

ap_auth_type : include/http_core.h line=310 column=26
a
p_auth_type(r : server/request.c line=102 column=58
r
)
201                                  conditional operator : true=0, false=0
?
 "check access.  Check your 'Require' directive"
202                                  : "perform authentication. AuthType not set!",
203                                   r : server/request.c line=102 column=58
r
);
204                }
205            }
206            break : pass=0
b
reak;
207
208        case : true=0, false=0
c
ase SATISFY_ANY:
209            if : true=0, false=0
i
f (((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_run_access_checker : enter=0, leave=0

ap_run_access_checker : server/ line=4 column=1
a
p_run_access_checker(r : server/request.c line=102 column=58
r
)) != : true=0, false=0
!
= 0)) {
210                if : true=0, false=0
i
f (! : true=0, false=0
!
ap_some_auth_required : enter=0, leave=0

ap_some_auth_required : include/http_request.h line=183 column=17
a
p_some_auth_required(r : server/request.c line=102 column=58
r
)) {
211                    return : pass=0
r
eturn decl_die : enter=0, leave=0

decl_die : server/request.c line=85 column=12
d
ecl_die(access_status : server/request.c line=105 column=9
a
ccess_status, "check access", r : server/request.c line=102 column=58
r
);
212                }
213
214                if : true=0, false=0
i
f (((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_run_check_user_id : enter=0, leave=0

ap_run_check_user_id : server/ line=67 column=1
a
p_run_check_user_id(r : server/request.c line=102 column=58
r
)) != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= 0)
215                    || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
ap_auth_type : enter=0, leave=0

ap_auth_type : include/http_core.h line=310 column=26
a
p_auth_type(r : server/request.c line=102 column=58
r
)) {
216                    return : pass=0
r
eturn decl_die : enter=0, leave=0

decl_die : server/request.c line=85 column=12
d
ecl_die(access_status : server/request.c line=105 column=9
a
ccess_status, ap_auth_type : enter=0, leave=0

ap_auth_type : include/http_core.h line=310 column=26
a
p_auth_type(r : server/request.c line=102 column=58
r
)
217                                  conditional operator : true=0, false=0
?
 "check user.  Check your authn provider!"
218                                  : "perform authentication. AuthType not set!",
219                                  r : server/request.c line=102 column=58
r
);
220                }
221
222                if : true=0, false=0
i
f (((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_run_auth_checker : enter=0, leave=0

ap_run_auth_checker : server/ line=4 column=1
a
p_run_auth_checker(r : server/request.c line=102 column=58
r
)) != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= 0)
223                    || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
ap_auth_type : enter=0, leave=0

ap_auth_type : include/http_core.h line=310 column=26
a
p_auth_type(r : server/request.c line=102 column=58
r
)) {
224                    return : pass=0
r
eturn decl_die : enter=0, leave=0

decl_die : server/request.c line=85 column=12
d
ecl_die(access_status : server/request.c line=105 column=9
a
ccess_status, ap_auth_type : enter=0, leave=0

ap_auth_type : include/http_core.h line=310 column=26
a
p_auth_type(r : server/request.c line=102 column=58
r
)
225                                  conditional operator : true=0, false=0
?
 "check access.  Check your 'Require' directive"
226                                  : "perform authentication. AuthType not set!",
227                                  r : server/request.c line=102 column=58
r
);
228                }
229            }
230            break : pass=0
b
reak;
231        }
232    }
233    /* XXX Must make certain the ap_run_type_checker short circuits mime
234     * in mod-proxy for r->proxyreq && r->parsed_uri.scheme
235     *                              && !strcmp(r->parsed_uri.scheme, "http")
236     */
237    if : true=0, false=0
i
f ((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_run_type_checker : enter=0, leave=0

ap_run_type_checker : server/ line=67 column=1
a
p_run_type_checker(r : server/request.c line=102 column=58
r
)) != : true=0, false=0
!
= 0) {
238        return : pass=0
r
eturn decl_die : enter=0, leave=0

decl_die : server/request.c line=85 column=12
d
ecl_die(access_status : server/request.c line=105 column=9
a
ccess_status, "find types", r : server/request.c line=102 column=58
r
);
239    }
240
241    if : true=0, false=0
i
f ((access_status : server/request.c line=105 column=9
a
ccess_status = : pass=0
=
 ap_run_fixups : enter=0, leave=0

ap_run_fixups : server/ line=67 column=1
a
p_run_fixups(r : server/request.c line=102 column=58
r
)) != : true=0, false=0
!
= 0) {
242        return : pass=0
r
eturn access_status : server/request.c line=105 column=9
a
ccess_status;
243    }
244
245    return : pass=0
r
eturn OK;
246}
247
248
249/* Useful caching structures to repeat _walk/merge sequences as required
250 * when a subrequest or redirect reuses substantially the same config.
251 *
252 * Directive order in the httpd.conf file and its Includes significantly
253 * impact this optimization.  Grouping common blocks at the front of the
254 * config that are less likely to change between a request and
255 * its subrequests, or between a request and its redirects reduced
256 * the work of these functions significantly.
257 */
258
259typedef struct walk_walked_t {
260    ap_conf_vector_t *matched; /* A dir_conf sections we matched */
261    ap_conf_vector_t *merged;  /* The dir_conf merged result */
262} walk_walked_t;
263
264typedef struct walk_cache_t {
265    const char         *cached;          /* The identifier we matched */
266    ap_conf_vector_t  **dir_conf_tested; /* The sections we matched against */
267    ap_conf_vector_t   *dir_conf_merged; /* Base per_dir_config */
268    ap_conf_vector_t   *per_dir_result;  /* per_dir_config += walked result */
269    apr_array_header_t *walked;          /* The list of walk_walked_t results */
270} walk_cache_t;
271
272static walk_cache_t *prep_walk_cache : call=0
p
rep_walk_cache(apr_size_t t, request_rec *r)
273{
274    walk_cache_t *cache;
275    void **note;
276
277    /* Find the most relevant, recent entry to work from.  That would be
278     * this request (on the second call), or the parent request of a
279     * subrequest, or the prior request of an internal redirect.  Provide
280     * this _walk()er with a copy it is allowed to munge.  If there is no
281     * parent or prior cached request, then create a new walk cache.
282     */
283    note : server/request.c line=275 column=12
n
ote = : pass=0
=
 ap_get_request_note : enter=0, leave=0

ap_get_request_note : include/http_core.h line=415 column=21
a
p_get_request_note(r : server/request.c line=272 column=65
r
t : server/request.c line=272 column=49
t
);
284    if : true=0, false=0
i
f (! : true=0, false=0
!
note : server/request.c line=275 column=12
n
ote) {
285        return : pass=0
r
eturn NULL;
286    }
287
288    if : true=0, false=0
i
f (! : true=0, false=0
!
(cache : server/request.c line=274 column=19
c
ache = : pass=0
=
 * dereference : enter=0, leave=0
*
note : server/request.c line=275 column=12
n
ote)) {
289        void **inherit_note;
290
291        if : true=0, false=0
i
f ((r : server/request.c line=272 column=65
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>main : include/httpd.h line=793 column=18
m
ain
292             && : true=0, false=0
&
& ((inherit_note : server/request.c line=289 column=16
i
nherit_note = : pass=0
MC/DC independently affect : true=0, false=0
=TF
 ap_get_request_note : enter=0, leave=0

ap_get_request_note : include/http_core.h line=415 column=21
a
p_get_request_note(r : server/request.c line=272 column=65
r
-> : enter=0, leave=0
-
>main : include/httpd.h line=793 column=18
m
ain, t : server/request.c line=272 column=49
t
)))
293             && : true=0, false=0
&
MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
inherit_note : server/request.c line=289 column=16
i
nherit_note)
294            || : true=0, false=0
|
| (r : server/request.c line=272 column=65
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>prev : include/httpd.h line=789 column=18
p
rev
295                && : true=0, false=0
&
& ((inherit_note : server/request.c line=289 column=16
i
nherit_note = : pass=0
MC/DC independently affect : true=0, false=0
=TF
 ap_get_request_note : enter=0, leave=0

ap_get_request_note : include/http_core.h line=415 column=21
a
p_get_request_note(r : server/request.c line=272 column=65
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev, t : server/request.c line=272 column=49
t
)))
296                && : true=0, false=0
&
MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
inherit_note : server/request.c line=289 column=16
i
nherit_note)) {
297            cache : server/request.c line=274 column=19
c
ache = : pass=0
=
 apr_pmemdup : enter=0, leave=0

apr_pmemdup : /usr/include/apr-1/apr_strings.h line=131 column=21
a
pr_pmemdup(r : server/request.c line=272 column=65
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, * dereference : enter=0, leave=0
*
inherit_note : server/request.c line=289 column=16
i
nherit_note,
298                                sizeof(*cache));
299            cache : server/request.c line=274 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked = : enter=0, leave=0
=
 apr_array_copy : enter=0, leave=0

apr_array_copy : /usr/include/apr-1/apr_tables.h line=176 column=35
a
pr_array_copy(r : server/request.c line=272 column=65
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, cache : server/request.c line=274 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked);
300        }
301        else {
302            cache : server/request.c line=274 column=19
c
ache = : pass=0
=
 apr_pcalloc(r : server/request.c line=272 column=65
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, sizeof(*cache));
303            cache : server/request.c line=274 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked = : enter=0, leave=0
=
 apr_array_make : enter=0, leave=0

apr_array_make : /usr/include/apr-1/apr_tables.h line=111 column=35
a
pr_array_make(r : server/request.c line=272 column=65
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, 4, sizeof(walk_walked_t));
304        }
305
306        *note : server/request.c line=275 column=12
n
ote = : enter=0, leave=0
=
 cache : server/request.c line=274 column=19
c
ache;
307    }
308    return : pass=0
r
eturn cache : server/request.c line=274 column=19
c
ache;
309}
310
311/*****************************************************************
312 *
313 * Getting and checking directory configuration.  Also checks the
314 * FollowSymlinks and FollowSymOwner stuff, since this is really the
315 * only place that can happen (barring a new mid_dir_walk callout).
316 *
317 * We can't do it as an access_checker module function which gets
318 * called with the final per_dir_config, since we could have a directory
319 * with FollowSymLinks disabled, which contains a symlink to another
320 * with a .htaccess file which turns FollowSymLinks back on --- and
321 * access in such a case must be denied.  So, whatever it is that
322 * checks FollowSymLinks needs to know the state of the options as
323 * they change, all the way down.
324 */
325
326
327/*
328 * resolve_symlink must _always_ be called on an APR_LNK file type!
329 * It will resolve the actual target file type, modification date, etc,
330 * and provide any processing required for symlink evaluation.
331 * Path must already be cleaned, no trailing slash, no multi-slashes,
332 * and don't call this on the root!
333 *
334 * Simply, the number of times we deref a symlink are minimal compared
335 * to the number of times we had an extra lstat() since we 'weren't sure'.
336 *
337 * To optimize, we stat() anything when given (opts & OPT_SYM_LINKS), otherwise
338 * we start off with an lstat().  Every lstat() must be dereferenced in case
339 * it points at a 'nasty' - we must always rerun check_safe_file (or similar.)
340 */
341static int resolve_symlink : call=0
r
esolve_symlink(char *d, apr_finfo_t *lfi, int opts, apr_pool_t *p)
342{
343    apr_finfo_t fi;
344    int res;
345    const char *savename;
346
347    if : true=0, false=0
i
f (! : true=0, false=0
!
(opts : server/request.c line=341 column=59
o
pts & : pass=0
&
 (OPT_SYM_OWNER | : pass=0
|
 OPT_SYM_LINKS))) {
348        return : pass=0
r
eturn HTTP_FORBIDDEN;
349    }
350
351    /* Save the name from the valid bits. */
352    savename : server/request.c line=345 column=17
s
avename = : pass=0
=
 (lfi : server/request.c line=341 column=50
l
fi-> : enter=0, leave=0
-
>valid : /usr/include/apr-1/apr_file_info.h line=179 column=17 valid & : pass=0
&
 APR_FINFO_NAME) conditional operator : true=0, false=0
?
 lfi : server/request.c line=341 column=50
l
fi-> : enter=0, leave=0
-
>name : /usr/include/apr-1/apr_file_info.h line=210 column=17 name : NULL;
353
354    /* if OPT_SYM_OWNER is unset, we only need to check target accessible */
355    if : true=0, false=0
i
f (! : true=0, false=0
!
(opts : server/request.c line=341 column=59
o
pts & : pass=0
&
 OPT_SYM_OWNER)) {
356        if : true=0, false=0
i
f ((res : server/request.c line=344 column=9
r
es = : pass=0
=
 apr_stat : enter=0, leave=0

apr_stat : /usr/include/apr-1/apr_file_info.h line=229 column=27
a
pr_stat(&fi : server/request.c line=343 column=17
f
i, d : server/request.c line=341 column=34
d
lfi : server/request.c line=341 column=50
l
fi-> : enter=0, leave=0
-
>valid : /usr/include/apr-1/apr_file_info.h line=179 column=17 valid & : pass=0
&
 ~ : pass=0
~
(APR_FINFO_NAME
357                                                 | : pass=0
|
 APR_FINFO_LINK), p : server/request.c line=341 column=77
p
))
358                 != : true=0, false=0
!
= APR_SUCCESS) {
359            return : pass=0
r
eturn HTTP_FORBIDDEN;
360        }
361
362        /* Give back the target */
363        memcpy : enter=0, leave=0

memcpy : /usr/include/string.h line=44 column=14
m
emcpy(lfi : server/request.c line=341 column=50
l
fi, &fi : server/request.c line=343 column=17
f
i, sizeof(fi));
364        if : true=0, false=0
i
f (savename : server/request.c line=345 column=17
s
avename) {
365            lfi : server/request.c line=341 column=50
l
fi-> : enter=0, leave=0
-
>name : /usr/include/apr-1/apr_file_info.h line=210 column=17 name = : enter=0, leave=0
=
 savename : server/request.c line=345 column=17
s
avename;
366            lfi : server/request.c line=341 column=50
l
fi-> : enter=0, leave=0
-
>valid : /usr/include/apr-1/apr_file_info.h line=179 column=17 valid |= : enter=0, leave=0
|
= APR_FINFO_NAME;
367        }
368
369        return : pass=0
r
eturn OK;
370    }
371
372    /* OPT_SYM_OWNER only works if we can get the owner of
373     * both the file and symlink.  First fill in a missing
374     * owner of the symlink, then get the info of the target.
375     */
376    if : true=0, false=0
i
f (! : true=0, false=0
!
(lfi : server/request.c line=341 column=50
l
fi-> : enter=0, leave=0
-
>valid : /usr/include/apr-1/apr_file_info.h line=179 column=17 valid & : pass=0
&
 APR_FINFO_OWNER)) {
377        if : true=0, false=0
i
f ((res : server/request.c line=344 column=9
r
es = : pass=0
=
 apr_stat : enter=0, leave=0

apr_stat : /usr/include/apr-1/apr_file_info.h line=229 column=27
a
pr_stat(lfi : server/request.c line=341 column=50
l
fi, d : server/request.c line=341 column=34
d
,
378                            lfi : server/request.c line=341 column=50
l
fi-> : enter=0, leave=0
-
>valid : /usr/include/apr-1/apr_file_info.h line=179 column=17 valid | : pass=0
|
 APR_FINFO_LINK | : pass=0
|
 APR_FINFO_OWNER, p : server/request.c line=341 column=77
p
))
379            != : true=0, false=0
!
= APR_SUCCESS) {
380            return : pass=0
r
eturn HTTP_FORBIDDEN;
381        }
382    }
383
384    if : true=0, false=0
i
f ((res : server/request.c line=344 column=9
r
es = : pass=0
=
 apr_stat : enter=0, leave=0

apr_stat : /usr/include/apr-1/apr_file_info.h line=229 column=27
a
pr_stat(&fi : server/request.c line=343 column=17
f
i, d : server/request.c line=341 column=34
d
lfi : server/request.c line=341 column=50
l
fi-> : enter=0, leave=0
-
>valid : /usr/include/apr-1/apr_file_info.h line=179 column=17 valid & : pass=0
&
 ~ : pass=0
~
(APR_FINFO_NAME), p : server/request.c line=341 column=77
p
))
385        != : true=0, false=0
!
= APR_SUCCESS) {
386        return : pass=0
r
eturn HTTP_FORBIDDEN;
387    }
388
389    if : true=0, false=0
i
f (apr_uid_compare(fi : server/request.c line=343 column=17
f
i.user : /usr/include/apr-1/apr_file_info.h line=188 column=15 user, lfi : server/request.c line=341 column=50
l
fi-> : enter=0, leave=0
-
>user : /usr/include/apr-1/apr_file_info.h line=188 column=15 user) != : true=0, false=0
!
= APR_SUCCESS) {
390        return : pass=0
r
eturn HTTP_FORBIDDEN;
391    }
392
393    /* Give back the target */
394    memcpy : enter=0, leave=0

memcpy : /usr/include/string.h line=44 column=14
m
emcpy(lfi : server/request.c line=341 column=50
l
fi, &fi : server/request.c line=343 column=17
f
i, sizeof(fi));
395    if : true=0, false=0
i
f (savename : server/request.c line=345 column=17
s
avename) {
396        lfi : server/request.c line=341 column=50
l
fi-> : enter=0, leave=0
-
>name : /usr/include/apr-1/apr_file_info.h line=210 column=17 name = : enter=0, leave=0
=
 savename : server/request.c line=345 column=17
s
avename;
397        lfi : server/request.c line=341 column=50
l
fi-> : enter=0, leave=0
-
>valid : /usr/include/apr-1/apr_file_info.h line=179 column=17 valid |= : enter=0, leave=0
|
= APR_FINFO_NAME;
398    }
399
400    return : pass=0
r
eturn OK;
401}
402
403
404/*
405 * As we walk the directory configuration, the merged config won't
406 * be 'rooted' to a specific vhost until the very end of the merge.
407 *
408 * We need a very fast mini-merge to a real, vhost-rooted merge
409 * of core.opts and core.override, the only options tested within
410 * directory_walk itself.
411 *
412 * See core.c::merge_core_dir_configs() for explanation.
413 */
414
415typedef struct core_opts_t {
416        allow_options_t opts;
417        allow_options_t add;
418        allow_options_t remove;
419        overrides_t override;
420        overrides_t override_opts;
421} core_opts_t;
422
423static void core_opts_merge : call=0
c
ore_opts_merge(const ap_conf_vector_t *sec, core_opts_t *opts)
424{
425    core_dir_config *this_dir = ap_get_module_config(sec : server/request.c line=423 column=53
s
ec, &core_module : include/http_core.h line=345 column=31
c
ore_module);
426
427    if : true=0, false=0
i
f (! : true=0, false=0
!
this_dir : server/request.c line=425 column=22
t
his_dir) {
428        return : pass=0
r
eturn;
429    }
430
431    if : true=0, false=0
i
f (this_dir : server/request.c line=425 column=22
t
his_dir-> : enter=0, leave=0
-
>opts : include/http_core.h line=463 column=21
o
pts & : pass=0
&
 OPT_UNSET) {
432        opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>add : server/request.c line=417 column=25
a
dd = : enter=0, leave=0
=
 (opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>add : server/request.c line=417 column=25
a
dd & : pass=0
&
 ~ : pass=0
~
this_dir : server/request.c line=425 column=22
t
his_dir-> : enter=0, leave=0
-
>opts_remove : include/http_core.h line=465 column=21
o
pts_remove)
433                   | : pass=0
|
 this_dir : server/request.c line=425 column=22
t
his_dir-> : enter=0, leave=0
-
>opts_add : include/http_core.h line=464 column=21
o
pts_add;
434        opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>remove : server/request.c line=418 column=25
r
emove = : enter=0, leave=0
=
 (opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>remove : server/request.c line=418 column=25
r
emove & : pass=0
&
 ~ : pass=0
~
this_dir : server/request.c line=425 column=22
t
his_dir-> : enter=0, leave=0
-
>opts_add : include/http_core.h line=464 column=21
o
pts_add)
435                      | : pass=0
|
 this_dir : server/request.c line=425 column=22
t
his_dir-> : enter=0, leave=0
-
>opts_remove : include/http_core.h line=465 column=21
o
pts_remove;
436        opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>opts : server/request.c line=416 column=25
o
pts = : enter=0, leave=0
=
 (opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>opts : server/request.c line=416 column=25
o
pts & : pass=0
&
 ~ : pass=0
~
opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>remove : server/request.c line=418 column=25
r
emove) | : pass=0
|
 opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>add : server/request.c line=417 column=25
a
dd;
437    }
438    else {
439        opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>opts : server/request.c line=416 column=25
o
pts = : enter=0, leave=0
=
 this_dir : server/request.c line=425 column=22
t
his_dir-> : enter=0, leave=0
-
>opts : include/http_core.h line=463 column=21
o
pts;
440        opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>add : server/request.c line=417 column=25
a
dd = : enter=0, leave=0
=
 this_dir : server/request.c line=425 column=22
t
his_dir-> : enter=0, leave=0
-
>opts_add : include/http_core.h line=464 column=21
o
pts_add;
441        opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>remove : server/request.c line=418 column=25
r
emove = : enter=0, leave=0
=
 this_dir : server/request.c line=425 column=22
t
his_dir-> : enter=0, leave=0
-
>opts_remove : include/http_core.h line=465 column=21
o
pts_remove;
442    }
443
444    if : true=0, false=0
i
f (! : true=0, false=0
!
(this_dir : server/request.c line=425 column=22
t
his_dir-> : enter=0, leave=0
-
>override : include/http_core.h line=466 column=17
o
verride & : pass=0
&
 OR_UNSET)) {
445        opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>override : server/request.c line=419 column=21
o
verride = : enter=0, leave=0
=
 this_dir : server/request.c line=425 column=22
t
his_dir-> : enter=0, leave=0
-
>override : include/http_core.h line=466 column=17
o
verride;
446        opts : server/request.c line=423 column=71
o
pts-> : enter=0, leave=0
-
>override_opts : server/request.c line=420 column=21
o
verride_opts = : enter=0, leave=0
=
 this_dir : server/request.c line=425 column=22
t
his_dir-> : enter=0, leave=0
-
>override_opts : include/http_core.h line=467 column=21
o
verride_opts;
447    }
448}
449
450
451/*****************************************************************
452 *
453 * Getting and checking directory configuration.  Also checks the
454 * FollowSymlinks and FollowSymOwner stuff, since this is really the
455 * only place that can happen (barring a new mid_dir_walk callout).
456 *
457 * We can't do it as an access_checker module function which gets
458 * called with the final per_dir_config, since we could have a directory
459 * with FollowSymLinks disabled, which contains a symlink to another
460 * with a .htaccess file which turns FollowSymLinks back on --- and
461 * access in such a case must be denied.  So, whatever it is that
462 * checks FollowSymLinks needs to know the state of the options as
463 * they change, all the way down.
464 */
465
466AP_DECLARE(int) ap_directory_walk : call=0
a
p_directory_walk(request_rec *r)
467{
468    ap_conf_vector_t *now_merged = NULL;
469    core_server_config *sconf = ap_get_module_config(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>module_config : include/httpd.h line=1207 column=30
m
odule_config,
470                                                     &core_module : include/http_core.h line=345 column=31
c
ore_module);
471    ap_conf_vector_t **sec_ent = (ap_conf_vector_t **) sconf : server/request.c line=469 column=25
s
conf-> : enter=0, leave=0
-
>sec_dir : include/http_core.h line=609 column=25
s
ec_dir-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
472    int num_sec = sconf : server/request.c line=469 column=25
s
conf-> : enter=0, leave=0
-
>sec_dir : include/http_core.h line=609 column=25
s
ec_dir-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts;
473    walk_cache_t *cache;
474    char *entry_dir;
475    apr_status_t rv;
476
477    /* XXX: Better (faster) tests needed!!!
478     *
479     * "OK" as a response to a real problem is not _OK_, but to allow broken
480     * modules to proceed, we will permit the not-a-path filename to pass the
481     * following two tests.  This behavior may be revoked in future versions
482     * of Apache.  We still must catch it later if it's heading for the core
483     * handler.  Leave INFO notes here for module debugging.
484     */
485    if : true=0, false=0
i
f (r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename == : true=0, false=0
=
= NULL) {
486        ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_INFO, 0, r : server/request.c line=466 column=48
r
,
487                      "Module bug?  Request filename is missing for URI %s",
488                      r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
489       return : pass=0
r
eturn OK;
490    }
491
492    /* Canonicalize the file path without resolving filename case or aliases
493     * so we can begin by checking the cache for a recent directory walk.
494     * This call will ensure we have an absolute path in the same pass.
495     */
496    if : true=0, false=0
i
f ((rv : server/request.c line=475 column=18
r
= : pass=0
=
 apr_filepath_merge : enter=0, leave=0

apr_filepath_merge : /usr/include/apr-1/apr_file_info.h line=354 column=27
a
pr_filepath_merge(&entry_dir : server/request.c line=474 column=11
e
ntry_dir, NULL, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename,
497                                 APR_FILEPATH_NOTRELATIVE, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool))
498                  != : true=0, false=0
!
= APR_SUCCESS) {
499        ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_INFO, 0, r : server/request.c line=466 column=48
r
,
500                      "Module bug?  Request filename path %s is invalid or "
501                      "or not absolute for uri %s",
502                      r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
503        return : pass=0
r
eturn OK;
504    }
505
506    /* XXX Notice that this forces path_info to be canonical.  That might
507     * not be desired by all apps.  However, some of those same apps likely
508     * have significant security holes.
509     */
510    r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename = : enter=0, leave=0
=
 entry_dir : server/request.c line=474 column=11
e
ntry_dir;
511
512    cache : server/request.c line=473 column=19
c
ache = : pass=0
=
 prep_walk_cache : enter=0, leave=0

prep_walk_cache : server/request.c line=272 column=22
p
rep_walk_cache(AP_NOTE_DIRECTORY_WALK, r : server/request.c line=466 column=48
r
);
513
514    /* If this is not a dirent subrequest with a preconstructed
515     * r->finfo value, then we can simply stat the filename to
516     * save burning mega-cycles with unneeded stats - if this is
517     * an exact file match.  We don't care about failure... we
518     * will stat by component failing this meager attempt.
519     *
520     * It would be nice to distinguish APR_ENOENT from other
521     * types of failure, such as APR_ENOTDIR.  We can do something
522     * with APR_ENOENT, knowing that the path is good.
523     */
524    if : true=0, false=0
i
f (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype || : true=0, false=0
|
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
APR_LNK : /usr/include/apr-1/apr_file_info.h line=69 column=5 APR_LNK) {
525        rv : server/request.c line=475 column=18
r
= : pass=0
=
 apr_stat : enter=0, leave=0

apr_stat : /usr/include/apr-1/apr_file_info.h line=229 column=27
a
pr_stat(&r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, APR_FINFO_MIN, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool);
526
527        /* some OSs will return APR_SUCCESS/APR_REG if we stat
528         * a regular file but we have '/' at the end of the name;
529         *
530         * other OSs will return APR_ENOTDIR for that situation;
531         *
532         * handle it the same everywhere by simulating a failure
533         * if it looks like a directory but really isn't
534         *
535         * Also reset if the stat failed, just for safety.
536         */
537        if : true=0, false=0
i
f ((rv : server/request.c line=475 column=18
r
!= : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_SUCCESS) || : true=0, false=0
|
|
538            (r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
infoMC/DC independently affect : true=0, false=0
.TF
filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype && : true=0, false=0
&
&
539             (r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
APR_DIR : /usr/include/apr-1/apr_file_info.h line=65 column=5 APR_DIR) && : true=0, false=0
&
&
540             (r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename[] : enter=0, leave=0
[
strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename) - : pass=0
-
 1] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= '/'))) {
541             r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype = : pass=0
=
 0; /* forget what we learned */
542        }
543    }
544
545    if : true=0, false=0
i
f (r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
=
APR_REG : /usr/include/apr-1/apr_file_info.h line=64 column=5 APR_REG) {
546        entry_dir : server/request.c line=474 column=11
e
ntry_dir = : pass=0
=
 ap_make_dirstr_parent : enter=0, leave=0

ap_make_dirstr_parent : include/httpd.h line=1586 column=20
a
p_make_dirstr_parent(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, entry_dir : server/request.c line=474 column=11
e
ntry_dir);
547    }
548    else if : true=0, false=0
i
f (r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename[] : enter=0, leave=0
[
strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename) - : pass=0
-
 1] != : true=0, false=0
!
= '/') {
549        entry_dir : server/request.c line=474 column=11
e
ntry_dir = : pass=0
=
 apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, "/", NULL);
550    }
551
552    /* If we have a file already matches the path of r->filename,
553     * and the vhost's list of directory sections hasn't changed,
554     * we can skip rewalking the directory_walk entries.
555     */
556    if : true=0, false=0
i
f (cache : server/request.c line=473 column=19
c
acheMC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>cached : server/request.c line=265 column=25
c
ached
557        && : true=0, false=0
&
& ((r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
APR_REG : /usr/include/apr-1/apr_file_info.h line=64 column=5 APR_REG)
558            || : true=0, false=0
|
| ((r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
APR_DIR : /usr/include/apr-1/apr_file_info.h line=65 column=5 APR_DIR)
559                && : true=0, false=0
&
& (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
* dereference : enter=0, leave=0
*
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info)))
560        && : true=0, false=0
&
& (cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_tested : server/request.c line=266 column=25
d
ir_conf_tested == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
sec_ent : server/request.c line=471 column=24
s
ec_ent)
561        && : true=0, false=0
&
& (strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
s
trcmp(entry_dir : server/request.c line=474 column=11
e
ntry_dir, cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached) == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 0)) {
562
563        int familiar = 0;
564
565        /* Well this looks really familiar!  If our end-result (per_dir_result)
566         * didn't change, we have absolutely nothing to do :)
567         * Otherwise (as is the case with most dir_merged/file_merged requests)
568         * we must merge our dir_conf_merged onto this new r->per_dir_config.
569         */
570        if : true=0, false=0
i
f (r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config == : true=0, false=0
=
cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>per_dir_result : server/request.c line=268 column=25
p
er_dir_result) {
571            familiar : server/request.c line=563 column=13
f
amiliar = : pass=0
=
 1;
572        }
573
574        else if : true=0, false=0
i
f (r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config == : true=0, false=0
=
cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_merged : server/request.c line=267 column=25
d
ir_conf_merged) {
575            r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config = : enter=0, leave=0
=
 cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>per_dir_result : server/request.c line=268 column=25
p
er_dir_result;
576            familiar : server/request.c line=563 column=13
f
amiliar = : pass=0
=
 1;
577        }
578        if : true=0, false=0
i
f (familiar : server/request.c line=563 column=13
f
amiliar) {
579            apr_finfo_t thisinfo;
580            int res;
581            allow_options_t opts;
582            core_dir_config *this_dir;
583
584            this_dir : server/request.c line=582 column=30
t
his_dir = : pass=0
=
 ap_get_module_config(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config, &core_module : include/http_core.h line=345 column=31
c
ore_module);
585            opts : server/request.c line=581 column=29
o
pts = : pass=0
=
 this_dir : server/request.c line=582 column=30
t
his_dir-> : enter=0, leave=0
-
>opts : include/http_core.h line=463 column=21
o
pts;
586            /*
587             * If Symlinks are allowed in general we do not need the following
588             * check.
589             */
590            if : true=0, false=0
i
f (! : true=0, false=0
!
(opts : server/request.c line=581 column=29
o
pts & : pass=0
&
 OPT_SYM_LINKS)) {
591                rv : server/request.c line=475 column=18
r
= : pass=0
=
 apr_stat : enter=0, leave=0

apr_stat : /usr/include/apr-1/apr_file_info.h line=229 column=27
a
pr_stat(&thisinfo : server/request.c line=579 column=25
t
hisinfo, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename,
592                              APR_FINFO_MIN | : pass=0
|
 APR_FINFO_NAME | : pass=0
|
 APR_FINFO_LINK,
593                              r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool);
594                /*
595                 * APR_INCOMPLETE is as fine as result as APR_SUCCESS as we
596                 * have added APR_FINFO_NAME to the wanted parameter of
597                 * apr_stat above. On Unix platforms this means that apr_stat
598                 * is always going to return APR_INCOMPLETE in the case that
599                 * the call to the native stat / lstat did not fail.
600                 */
601                if : true=0, false=0
i
f ((rv : server/request.c line=475 column=18
r
!= : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_INCOMPLETE) && : true=0, false=0
&
& (rv : server/request.c line=475 column=18
r
!= : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_SUCCESS)) {
602                    /*
603                     * This should never happen, because we did a stat on the
604                     * same file, resolving a possible symlink several lines
605                     * above. Therefore do not make a detailed analysis of rv
606                     * in this case for the reason of the failure, just bail out
607                     * with a HTTP_FORBIDDEN in case we hit a race condition
608                     * here.
609                     */
610                    ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_ERR, rv : server/request.c line=475 column=18
r
v, r : server/request.c line=466 column=48
r
,
611                                  "access to %s failed; stat of '%s' failed.",
612                                  r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
613                    return : pass=0
r
eturn r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 HTTP_FORBIDDEN;
614                }
615                if : true=0, false=0
i
f (thisinfo : server/request.c line=579 column=25
t
hisinfo.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
=
APR_LNK : /usr/include/apr-1/apr_file_info.h line=69 column=5 APR_LNK) {
616                    /* Is this a possibly acceptable symlink? */
617                    if : true=0, false=0
i
f ((res : server/request.c line=580 column=17
r
es = : pass=0
=
 resolve_symlink : enter=0, leave=0

resolve_symlink : server/request.c line=341 column=12
r
esolve_symlink(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, &thisinfo : server/request.c line=579 column=25
t
hisinfo,
618                                               opts : server/request.c line=581 column=29
o
pts, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool)) != : true=0, false=0
!
= OK) {
619                        ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_ERR, 0, r : server/request.c line=466 column=48
r
,
620                                      "Symbolic link not allowed "
621                                      "or link target not accessible: %s",
622                                      r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
623                        return : pass=0
r
eturn r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 res : server/request.c line=580 column=17
r
es;
624                    }
625                }
626            }
627            return : pass=0
r
eturn OK;
628        }
629
630        if : true=0, false=0
i
f (cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts) {
631            now_merged : server/request.c line=468 column=23
n
ow_merged = : pass=0
=
 ((walk_walked_t*)cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts)
632                [] : enter=0, leave=0
[
cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts - : pass=0
-
 1].merged : server/request.c line=261 column=23
m
erged;
633        }
634    }
635    else {
636        /* We start now_merged from NULL since we want to build
637         * a locations list that can be merged to any vhost.
638         */
639        int sec_idx;
640        int matches = cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts;
641        walk_walked_t *last_walk = (walk_walked_t*)cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
642        core_dir_config *this_dir;
643        core_opts_t opts;
644        apr_finfo_t thisinfo;
645        char *save_path_info;
646        apr_size_t buflen;
647        char *buf;
648        unsigned int seg, startseg;
649
650        /* Invariant: from the first time filename_len is set until
651         * it goes out of scope, filename_len==strlen(r->filename)
652         */
653        apr_size_t filename_len;
654#ifdef CASE_BLIND_FILESYSTEM
655        apr_size_t canonical_len;
656#endif
657
658        /*
659         * We must play our own mini-merge game here, for the few
660         * running dir_config values we care about within dir_walk.
661         * We didn't start the merge from r->per_dir_config, so we
662         * accumulate opts and override as we merge, from the globals.
663         */
664        this_dir : server/request.c line=642 column=26
t
his_dir = : pass=0
=
 ap_get_module_config(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config, &core_module : include/http_core.h line=345 column=31
c
ore_module);
665        opts : server/request.c line=643 column=21
o
pts.opts : server/request.c line=416 column=25
o
pts = : pass=0
=
 this_dir : server/request.c line=642 column=26
t
his_dir-> : enter=0, leave=0
-
>opts : include/http_core.h line=463 column=21
o
pts;
666        opts : server/request.c line=643 column=21
o
pts.add : server/request.c line=417 column=25
a
dd = : pass=0
=
 this_dir : server/request.c line=642 column=26
t
his_dir-> : enter=0, leave=0
-
>opts_add : include/http_core.h line=464 column=21
o
pts_add;
667        opts : server/request.c line=643 column=21
o
pts.remove : server/request.c line=418 column=25
r
emove = : pass=0
=
 this_dir : server/request.c line=642 column=26
t
his_dir-> : enter=0, leave=0
-
>opts_remove : include/http_core.h line=465 column=21
o
pts_remove;
668        opts : server/request.c line=643 column=21
o
pts.override : server/request.c line=419 column=21
o
verride = : pass=0
=
 this_dir : server/request.c line=642 column=26
t
his_dir-> : enter=0, leave=0
-
>override : include/http_core.h line=466 column=17
o
verride;
669        opts : server/request.c line=643 column=21
o
pts.override_opts : server/request.c line=420 column=21
o
verride_opts = : pass=0
=
 this_dir : server/request.c line=642 column=26
t
his_dir-> : enter=0, leave=0
-
>override_opts : include/http_core.h line=467 column=21
o
verride_opts;
670
671        /* Set aside path_info to merge back onto path_info later.
672         * If r->filename is a directory, we must remerge the path_info,
673         * before we continue!  [Directories cannot, by definition, have
674         * path info.  Either the next segment is not-found, or a file.]
675         *
676         * r->path_info tracks the unconsumed source path.
677         * r->filename  tracks the path as we process it
678         */
679        if : true=0, false=0
i
f ((r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
APR_DIR : /usr/include/apr-1/apr_file_info.h line=65 column=5 APR_DIR) && : true=0, false=0
&
r : server/request.c line=466 column=48
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>path_info : include/httpd.h line=953 column=11
p
ath_info && : true=0, false=0
&
MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info)
680        {
681            if : true=0, false=0
i
f ((rv : server/request.c line=475 column=18
r
= : pass=0
=
 apr_filepath_merge : enter=0, leave=0

apr_filepath_merge : /usr/include/apr-1/apr_file_info.h line=354 column=27
a
pr_filepath_merge(&r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename,
682                                         r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info,
683                                         APR_FILEPATH_NOTABOVEROOT, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool))
684                != : true=0, false=0
!
= APR_SUCCESS) {
685                ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_ERR, rv : server/request.c line=475 column=18
r
v, r : server/request.c line=466 column=48
r
,
686                              "dir_walk error, path_info %s is not relative "
687                              "to the filename path %s for uri %s",
688                              r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
689                return : pass=0
r
eturn HTTP_INTERNAL_SERVER_ERROR;
690            }
691
692            save_path_info : server/request.c line=645 column=15
s
ave_path_info = : pass=0
=
 NULL;
693        }
694        else {
695            save_path_info : server/request.c line=645 column=15
s
ave_path_info = : pass=0
=
 r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info;
696            r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info = : enter=0, leave=0
=
 r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename;
697        }
698
699#ifdef CASE_BLIND_FILESYSTEM
700
701        canonical_len = 0;
702        while (r->canonical_filename && r->canonical_filename[canonical_len]
703               && (r->canonical_filename[canonical_len]
704                   == r->path_info[canonical_len])) {
705             ++canonical_len;
706        }
707
708        while (canonical_len
709               && ((r->canonical_filename[canonical_len - 1] != '/'
710                   && r->canonical_filename[canonical_len - 1])
711                   || (r->path_info[canonical_len - 1] != '/'
712                       && r->path_info[canonical_len - 1]))) {
713            --canonical_len;
714        }
715
716        /*
717         * Now build r->filename component by component, starting
718         * with the root (on Unix, simply "/").  We will make a huge
719         * assumption here for efficiency, that any canonical path
720         * already given included a canonical root.
721         */
722        rv = apr_filepath_root((const char **)&r->filename,
723                               (const char **)&r->path_info,
724                               canonical_len ? 0 : APR_FILEPATH_TRUENAME,
725                               r->pool);
726        filename_len = strlen(r->filename);
727
728        /*
729         * Bad assumption above?  If the root's length is longer
730         * than the canonical length, then it cannot be trusted as
731         * a truename.  So try again, this time more seriously.
732         */
733        if ((rv == APR_SUCCESS) && canonical_len
734            && (filename_len > canonical_len)) {
735            rv = apr_filepath_root((const char **)&r->filename,
736                                   (const char **)&r->path_info,
737                                   APR_FILEPATH_TRUENAME, r->pool);
738            filename_len = strlen(r->filename);
739            canonical_len = 0;
740        }
741
742#else /* ndef CASE_BLIND_FILESYSTEM, really this simple for Unix today; */
743
744        rv : server/request.c line=475 column=18
r
= : pass=0
=
 apr_filepath_root : enter=0, leave=0

apr_filepath_root : /usr/include/apr-1/apr_file_info.h line=336 column=27
a
pr_filepath_root((const char **)&r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename,
745                               (const char **)&r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info,
746                               0, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool);
747        filename_len : server/request.c line=653 column=20
f
ilename_len = : pass=0
=
 strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
748
749#endif
750
751        if : true=0, false=0
i
f (rv : server/request.c line=475 column=18
r
!= : true=0, false=0
!
= APR_SUCCESS) {
752            ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_ERR, rv : server/request.c line=475 column=18
r
v, r : server/request.c line=466 column=48
r
,
753                          "dir_walk error, could not determine the root "
754                          "path of filename %s%s for uri %s",
755                          r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
756            return : pass=0
r
eturn HTTP_INTERNAL_SERVER_ERROR;
757        }
758
759        /* Working space for terminating null and an extra / is required.
760         */
761        buflen : server/request.c line=646 column=20
b
uflen = : pass=0
=
 filename_len : server/request.c line=653 column=20
f
ilename_len + : pass=0
+
 strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info) + : pass=0
+
 2;
762        buf : server/request.c line=647 column=15
b
uf = : pass=0
=
 apr_palloc : enter=0, leave=0

apr_palloc : /usr/include/apr-1/apr_pools.h line=419 column=21
a
pr_palloc(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, buflen : server/request.c line=646 column=20
b
uflen);
763        memcpy : enter=0, leave=0

memcpy : /usr/include/string.h line=44 column=14
m
emcpy(buf : server/request.c line=647 column=15
b
uf, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, filename_len : server/request.c line=653 column=20
f
ilename_len + : pass=0
+
 1);
764        r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename = : enter=0, leave=0
=
 buf : server/request.c line=647 column=15
b
uf;
765        thisinfo : server/request.c line=644 column=21
t
hisinfo.valid : /usr/include/apr-1/apr_file_info.h line=179 column=17 valid = : pass=0
=
 APR_FINFO_TYPE;
766        thisinfo : server/request.c line=644 column=21
t
hisinfo.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype = : pass=0
=
 APR_DIR : /usr/include/apr-1/apr_file_info.h line=65 column=5 APR_DIR; /* It's the root, of course it's a dir */
767
768        /*
769         * seg keeps track of which segment we've copied.
770         * sec_idx keeps track of which section we're on, since sections are
771         *     ordered by number of segments. See core_reorder_directories
772         * startseg tells us how many segments describe the root path
773         *     e.g. the complete path "//host/foo/" to a UNC share (4)
774         */
775        startseg : server/request.c line=648 column=27
s
tartseg = : pass=0
=
 seg : server/request.c line=648 column=22
s
eg = : pass=0
=
 ap_count_dirs : enter=0, leave=0

ap_count_dirs : include/httpd.h line=1564 column=17
a
p_count_dirs(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
776        sec_idx : server/request.c line=639 column=13
s
ec_idx = : pass=0
=
 0;
777
778        /*
779         * Go down the directory hierarchy.  Where we have to check for
780         * symlinks, do so.  Where a .htaccess file has permission to
781         * override anything, try to find one.
782         */
783        do {
784            int res;
785            char *seg_name;
786            char *delim;
787            int temp_slash=0;
788
789            /* We have no trailing slash, but we sure would appreciate one.
790             * However, we don't want to append a / our first time through.
791             */
792            if : true=0, false=0
i
f ((seg : server/request.c line=648 column=22
s
eg > : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
 startseg : server/request.c line=648 column=27
s
tartseg) && : true=0, false=0
&
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename[] : enter=0, leave=0
[
filename_len : server/request.c line=653 column=20
f
ilename_len- : pass=0
-
1] != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= '/') {
793                r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename[filename_len : server/request.c line=653 column=20
f
ilename_len++ : pass=0
+
+] = : enter=0, leave=0
=
 '/';
794                r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename[filename_len : server/request.c line=653 column=20
f
ilename_len] = : enter=0, leave=0
=
 0;
795                temp_slash : server/request.c line=787 column=17
t
emp_slash= : pass=0
=
1;
796            }
797
798            /* Begin *this* level by looking for matching <Directory> sections
799             * from the server config.
800             */
801            for : true=0, false=0
f
or (; sec_idx : server/request.c line=639 column=13
s
ec_idx < : true=0, false=0
<
 num_sec : server/request.c line=472 column=9
n
um_sec; ++ : pass=0
+
+sec_idx : server/request.c line=639 column=13
s
ec_idx) {
802
803                ap_conf_vector_t *entry_config = sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx];
804                core_dir_config *entry_core;
805                entry_core : server/request.c line=804 column=34
e
ntry_core = : pass=0
=
 ap_get_module_config(entry_config : server/request.c line=803 column=35
e
ntry_config, &core_module : include/http_core.h line=345 column=31
c
ore_module);
806
807                /* No more possible matches for this many segments?
808                 * We are done when we find relative/regex/longer components.
809                 */
810                if : true=0, false=0
i
f (entry_core : server/request.c line=804 column=34
e
ntry_coreMC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>r : include/http_core.h line=543 column=17
r
 || : true=0, false=0
|
entry_core : server/request.c line=804 column=34
e
ntry_core-> : enter=0, leave=0
-
>d_components : include/http_core.h line=454 column=14
d
_components > : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
 seg : server/request.c line=648 column=22
s
eg) {
811                    break : pass=0
b
reak;
812                }
813
814                /* We will never skip '0' element components, e.g. plain old
815                 * <Directory >, and <Directory "/"> are classified as zero
816                 * so that Win32/Netware/OS2 etc all pick them up.
817                 * Otherwise, skip over the mismatches.
818                 */
819                if : true=0, false=0
i
f (entry_core : server/request.c line=804 column=34
e
ntry_coreMC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>d_components : include/http_core.h line=454 column=14
d
_components
820                    && : true=0, false=0
&
& ((entry_core : server/request.c line=804 column=34
e
ntry_core-> : enter=0, leave=0
-
>d_components : include/http_core.h line=454 column=14
d
_components < : true=0, false=0
MC/DC independently affect : true=0, false=0
<TF
 seg : server/request.c line=648 column=22
s
eg)
821                     || : true=0, false=0
|
| (entry_core : server/request.c line=804 column=34
e
ntry_core-> : enter=0, leave=0
-
>d_is_fnmatch : include/http_core.h line=511 column=14
d
_is_fnmatch
822                         conditional operator : true=0, false=0
MC/DC independently affect : true=0, false=0
?TF
 (apr_fnmatch : enter=0, leave=0

apr_fnmatch : /usr/include/apr-1/apr_fnmatch.h line=122 column=27
a
pr_fnmatch(entry_core : server/request.c line=804 column=34
e
ntry_core-> : enter=0, leave=0
-
>d : include/http_core.h line=452 column=11
d
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename,
823                                        APR_FNM_PATHNAME) != : true=0, false=0
!
= APR_SUCCESS)
824                         : (strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
s
trcmp(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, entry_core : server/request.c line=804 column=34
e
ntry_core-> : enter=0, leave=0
-
>d : include/http_core.h line=452 column=11
d
!= : true=0, false=0
!
= 0)))) {
825                    continue : pass=0
c
ontinue;
826                }
827
828                /* If we haven't continue'd above, we have a match.
829                 *
830                 * Calculate our full-context core opts & override.
831                 */
832                core_opts_merge : enter=0, leave=0

core_opts_merge : server/request.c line=423 column=13
c
ore_opts_merge(sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx], &opts : server/request.c line=643 column=21
o
pts);
833
834                /* If we merged this same section last time, reuse it
835                 */
836                if : true=0, false=0
i
f (matches : server/request.c line=640 column=13
m
atches) {
837                    if : true=0, false=0
i
f (last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>matched : server/request.c line=260 column=23
m
atched == : true=0, false=0
=
sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx]) {
838                        now_merged : server/request.c line=468 column=23
n
ow_merged = : pass=0
=
 last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>merged : server/request.c line=261 column=23
m
erged;
839                        ++ : pass=0
+
+last_walk : server/request.c line=641 column=24
l
ast_walk;
840                        -- : pass=0
-
-matches : server/request.c line=640 column=13
m
atches;
841                        continue : pass=0
c
ontinue;
842                    }
843
844                    /* We fell out of sync.  This is our own copy of walked,
845                     * so truncate the remaining matches and reset remaining.
846                     */
847                    cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts -= : enter=0, leave=0
-
matches : server/request.c line=640 column=13
m
atches;
848                    matches : server/request.c line=640 column=13
m
atches = : pass=0
=
 0;
849                }
850
851                if : true=0, false=0
i
f (now_merged : server/request.c line=468 column=23
n
ow_merged) {
852                    now_merged : server/request.c line=468 column=23
n
ow_merged = : pass=0
=
 ap_merge_per_dir_configs : enter=0, leave=0

ap_merge_per_dir_configs : include/http_config.h line=852 column=36
a
p_merge_per_dir_configs(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
853                                                          now_merged : server/request.c line=468 column=23
n
ow_merged,
854                                                          sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx]);
855                }
856                else {
857                    now_merged : server/request.c line=468 column=23
n
ow_merged = : pass=0
=
 sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx];
858                }
859
860                last_walk : server/request.c line=641 column=24
l
ast_walk = : pass=0
=
 (walk_walked_t*)apr_array_push : enter=0, leave=0

apr_array_push : /usr/include/apr-1/apr_tables.h line=121 column=21
a
pr_array_push(cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked);
861                last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>matched : server/request.c line=260 column=23
m
atched = : enter=0, leave=0
=
 sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx];
862                last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>merged : server/request.c line=261 column=23
m
erged = : enter=0, leave=0
=
 now_merged : server/request.c line=468 column=23
n
ow_merged;
863            }
864
865            /* If .htaccess files are enabled, check for one, provided we
866             * have reached a real path.
867             */
868            do {  /* Not really a loop, just a break'able code block */
869
870                ap_conf_vector_t *htaccess_conf = NULL;
871
872                /* No htaccess in an incomplete root path,
873                 * nor if it's disabled
874                 */
875                if : true=0, false=0
i
f (seg : server/request.c line=648 column=22
s
eg < : true=0, false=0
MC/DC independently affect : true=0, false=0
<TF
 startseg : server/request.c line=648 column=27
s
tartseg || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
opts : server/request.c line=643 column=21
o
pts.override : server/request.c line=419 column=21
o
verride) {
876                    break : pass=0
b
reak;
877                }
878
879                res : server/request.c line=784 column=17
r
es = : pass=0
=
 ap_parse_htaccess : enter=0, leave=0

ap_parse_htaccess : include/http_config.h line=875 column=22
a
p_parse_htaccess(&htaccess_conf : server/request.c line=870 column=35
h
taccess_conf, r : server/request.c line=466 column=48
r
opts : server/request.c line=643 column=21
o
pts.override : server/request.c line=419 column=21
o
verride,
880                                        opts : server/request.c line=643 column=21
o
pts.override_opts : server/request.c line=420 column=21
o
verride_opts,
881                                        apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename),
882                                        sconf : server/request.c line=469 column=25
s
conf-> : enter=0, leave=0
-
>access_name : include/http_core.h line=608 column=11
a
ccess_name);
883                if : true=0, false=0
i
f (res : server/request.c line=784 column=17
r
es) {
884                    return : pass=0
r
eturn res : server/request.c line=784 column=17
r
es;
885                }
886
887                if : true=0, false=0
i
f (! : true=0, false=0
!
htaccess_conf : server/request.c line=870 column=35
h
taccess_conf) {
888                    break : pass=0
b
reak;
889                }
890
891                /* If we are still here, we found our htaccess.
892                 *
893                 * Calculate our full-context core opts & override.
894                 */
895                core_opts_merge : enter=0, leave=0

core_opts_merge : server/request.c line=423 column=13
c
ore_opts_merge(htaccess_conf : server/request.c line=870 column=35
h
taccess_conf, &opts : server/request.c line=643 column=21
o
pts);
896
897                /* If we merged this same htaccess last time, reuse it...
898                 * this wouldn't work except that we cache the htaccess
899                 * sections for the lifetime of the request, so we match
900                 * the same conf.  Good planning (no, pure luck ;)
901                 */
902                if : true=0, false=0
i
f (matches : server/request.c line=640 column=13
m
atches) {
903                    if : true=0, false=0
i
f (last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>matched : server/request.c line=260 column=23
m
atched == : true=0, false=0
=
htaccess_conf : server/request.c line=870 column=35
h
taccess_conf) {
904                        now_merged : server/request.c line=468 column=23
n
ow_merged = : pass=0
=
 last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>merged : server/request.c line=261 column=23
m
erged;
905                        ++ : pass=0
+
+last_walk : server/request.c line=641 column=24
l
ast_walk;
906                        -- : pass=0
-
-matches : server/request.c line=640 column=13
m
atches;
907                        break : pass=0
b
reak;
908                    }
909
910                    /* We fell out of sync.  This is our own copy of walked,
911                     * so truncate the remaining matches and reset
912                     * remaining.
913                     */
914                    cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts -= : enter=0, leave=0
-
matches : server/request.c line=640 column=13
m
atches;
915                    matches : server/request.c line=640 column=13
m
atches = : pass=0
=
 0;
916                }
917
918                if : true=0, false=0
i
f (now_merged : server/request.c line=468 column=23
n
ow_merged) {
919                    now_merged : server/request.c line=468 column=23
n
ow_merged = : pass=0
=
 ap_merge_per_dir_configs : enter=0, leave=0

ap_merge_per_dir_configs : include/http_config.h line=852 column=36
a
p_merge_per_dir_configs(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
920                                                          now_merged : server/request.c line=468 column=23
n
ow_merged,
921                                                          htaccess_conf : server/request.c line=870 column=35
h
taccess_conf);
922                }
923                else {
924                    now_merged : server/request.c line=468 column=23
n
ow_merged = : pass=0
=
 htaccess_conf : server/request.c line=870 column=35
h
taccess_conf;
925                }
926
927                last_walk : server/request.c line=641 column=24
l
ast_walk = : pass=0
=
 (walk_walked_t*)apr_array_push : enter=0, leave=0

apr_array_push : /usr/include/apr-1/apr_tables.h line=121 column=21
a
pr_array_push(cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked);
928                last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>matched : server/request.c line=260 column=23
m
atched = : enter=0, leave=0
=
 htaccess_conf : server/request.c line=870 column=35
h
taccess_conf;
929                last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>merged : server/request.c line=261 column=23
m
erged = : enter=0, leave=0
=
 now_merged : server/request.c line=468 column=23
n
ow_merged;
930
931            } while : true=0, false=0
w
hile (0); /* Only one htaccess, not a real loop */
932
933            /* That temporary trailing slash was useful, now drop it.
934             */
935            if : true=0, false=0
i
f (temp_slash : server/request.c line=787 column=17
t
emp_slash) {
936                r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename[-- : pass=0
-
-filename_len : server/request.c line=653 column=20
f
ilename_len] = : enter=0, leave=0
=
 '\0';
937            }
938
939            /* Time for all good things to come to an end?
940             */
941            if : true=0, false=0
i
f (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
* dereference : enter=0, leave=0
*
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info) {
942                break : pass=0
b
reak;
943            }
944
945            /* Now it's time for the next segment...
946             * We will assume the next element is an end node, and fix it up
947             * below as necessary...
948             */
949
950            seg_name : server/request.c line=785 column=19
s
eg_name = : pass=0
=
 r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename + : pass=0
+
 filename_len : server/request.c line=653 column=20
f
ilename_len;
951            delim : server/request.c line=786 column=19
d
elim = : pass=0
=
 strchr : enter=0, leave=0

strchr : /usr/include/string.h line=235 column=14
s
trchr(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info + : pass=0
+
 (* dereference : enter=0, leave=0
*
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info == : true=0, false=0
=
= '/' conditional operator : true=0, false=0
?
 1 : 0), '/');
952            if : true=0, false=0
i
f (delim : server/request.c line=786 column=19
d
elim) {
953                size_t path_info_len = delim : server/request.c line=786 column=19
d
elim - : pass=0
-
 r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info;
954                *delim : server/request.c line=786 column=19
d
elim = : enter=0, leave=0
=
 '\0';
955                memcpy : enter=0, leave=0

memcpy : /usr/include/string.h line=44 column=14
m
emcpy(seg_name : server/request.c line=785 column=19
s
eg_name, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info, path_info_len : server/request.c line=953 column=24
p
ath_info_len + : pass=0
+
 1);
956                filename_len : server/request.c line=653 column=20
f
ilename_len += : pass=0
+
path_info_len : server/request.c line=953 column=24
p
ath_info_len;
957                r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info = : enter=0, leave=0
=
 delim : server/request.c line=786 column=19
d
elim;
958                *delim : server/request.c line=786 column=19
d
elim = : enter=0, leave=0
=
 '/';
959            }
960            else {
961                size_t path_info_len = strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info);
962                memcpy : enter=0, leave=0

memcpy : /usr/include/string.h line=44 column=14
m
emcpy(seg_name : server/request.c line=785 column=19
s
eg_name, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info, path_info_len : server/request.c line=961 column=24
p
ath_info_len + : pass=0
+
 1);
963                filename_len : server/request.c line=653 column=20
f
ilename_len += : pass=0
+
path_info_len : server/request.c line=961 column=24
p
ath_info_len;
964                r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info += : enter=0, leave=0
+
path_info_len : server/request.c line=961 column=24
p
ath_info_len;
965            }
966            if : true=0, false=0
i
f (* dereference : enter=0, leave=0
*
seg_name : server/request.c line=785 column=19
s
eg_name == : true=0, false=0
=
= '/')
967                ++ : pass=0
+
+seg_name : server/request.c line=785 column=19
s
eg_name;
968
969            /* If nothing remained but a '/' string, we are finished
970             * XXX: NO WE ARE NOT!!!  Now process this puppy!!! */
971            if : true=0, false=0
i
f (! : true=0, false=0
!
* dereference : enter=0, leave=0
*
seg_name : server/request.c line=785 column=19
s
eg_name) {
972                break : pass=0
b
reak;
973            }
974
975            /* First optimization;
976             * If...we knew r->filename was a file, and
977             * if...we have strict (case-sensitive) filenames, or
978             *      we know the canonical_filename matches to _this_ name, and
979             * if...we have allowed symlinks
980             * skip the lstat and dummy up an APR_DIR value for thisinfo.
981             */
982            if : true=0, false=0
i
f (r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
infoMC/DC independently affect : true=0, false=0
.TF
filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype
983#ifdef CASE_BLIND_FILESYSTEM
984                && (filename_len <= canonical_len)
985#endif
986                && : true=0, false=0
&
& ((opts : server/request.c line=643 column=21
o
pts.opts : server/request.c line=416 column=25
o
pts & : pass=0
&
 (OPT_SYM_OWNER | : pass=0
|
 OPT_SYM_LINKS)) == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= OPT_SYM_LINKS))
987            {
988
989                thisinfo : server/request.c line=644 column=21
t
hisinfo.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype = : pass=0
=
 APR_DIR : /usr/include/apr-1/apr_file_info.h line=65 column=5 APR_DIR;
990                ++ : pass=0
+
+seg : server/request.c line=648 column=22
s
eg;
991                continue : pass=0
c
ontinue;
992            }
993
994            /* We choose apr_stat with flag APR_FINFO_LINK here, rather that
995             * plain apr_stat, so that we capture this path object rather than
996             * its target.  We will replace the info with our target's info
997             * below.  We especially want the name of this 'link' object, not
998             * the name of its target, if we are fixing the filename
999             * case/resolving aliases.
1000             */
1001            rv : server/request.c line=475 column=18
r
= : pass=0
=
 apr_stat : enter=0, leave=0

apr_stat : /usr/include/apr-1/apr_file_info.h line=229 column=27
a
pr_stat(&thisinfo : server/request.c line=644 column=21
t
hisinfo, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename,
1002                          APR_FINFO_MIN | : pass=0
|
 APR_FINFO_NAME | : pass=0
|
 APR_FINFO_LINK,
1003                          r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool);
1004
1005            if : true=0, false=0
i
f (APR_STATUS_IS_ENOENT(rv : server/request.c line=475 column=18
r
v)) {
1006                /* Nothing?  That could be nice.  But our directory
1007                 * walk is done.
1008                 */
1009                thisinfo : server/request.c line=644 column=21
t
hisinfo.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype = : pass=0
=
 APR_NOFILE : /usr/include/apr-1/apr_file_info.h line=63 column=5 APR_NOFILE;
1010                break : pass=0
b
reak;
1011            }
1012            else if : true=0, false=0
i
f (APR_STATUS_IS_EACCES(rv : server/request.c line=475 column=18
r
v)) {
1013                ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_ERR, rv : server/request.c line=475 column=18
r
v, r : server/request.c line=466 column=48
r
,
1014                              "access to %s denied (filesystem path '%s') "
1015                              "because search permissions are missing on a "
1016                              "component of the path", r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
1017                return : pass=0
r
eturn r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 HTTP_FORBIDDEN;
1018            }
1019            else if : true=0, false=0
i
f ((rv : server/request.c line=475 column=18
r
!= : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_SUCCESS && : true=0, false=0
&
rv : server/request.c line=475 column=18
r
!= : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_INCOMPLETE)
1020                     || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
(thisinfo : server/request.c line=644 column=21
t
hisinfo.valid : /usr/include/apr-1/apr_file_info.h line=179 column=17 valid & : pass=0
&
 APR_FINFO_TYPE)) {
1021                /* If we hit ENOTDIR, we must have over-optimized, deny
1022                 * rather than assume not found.
1023                 */
1024                ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_ERR, rv : server/request.c line=475 column=18
r
v, r : server/request.c line=466 column=48
r
,
1025                              "access to %s failed (filesystem path '%s')", 
1026                              r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
1027                return : pass=0
r
eturn r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 HTTP_FORBIDDEN;
1028            }
1029
1030            /* Fix up the path now if we have a name, and they don't agree
1031             */
1032            if : true=0, false=0
i
f ((thisinfo : server/request.c line=644 column=21
t
hisinfo.valid : /usr/include/apr-1/apr_file_info.h line=179 column=17 valid & : pass=0
&
 APR_FINFO_NAME)
1033                && : true=0, false=0
&
MC/DC independently affect : true=0, false=0
strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
sTF
trcmp(seg_name : server/request.c line=785 column=19
s
eg_name, thisinfo : server/request.c line=644 column=21
t
hisinfo.name : /usr/include/apr-1/apr_file_info.h line=210 column=17 name)) {
1034                /* TODO: provide users an option that an internal/external
1035                 * redirect is required here?  We need to walk the URI and
1036                 * filename in tandem to properly correlate these.
1037                 */
1038                strcpy : enter=0, leave=0

strcpy : /usr/include/string.h line=128 column=14
s
trcpy(seg_name : server/request.c line=785 column=19
s
eg_name, thisinfo : server/request.c line=644 column=21
t
hisinfo.name : /usr/include/apr-1/apr_file_info.h line=210 column=17 name);
1039                filename_len : server/request.c line=653 column=20
f
ilename_len = : pass=0
=
 strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
1040            }
1041
1042            if : true=0, false=0
i
f (thisinfo : server/request.c line=644 column=21
t
hisinfo.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
=
APR_LNK : /usr/include/apr-1/apr_file_info.h line=69 column=5 APR_LNK) {
1043                /* Is this a possibly acceptable symlink?
1044                 */
1045                if : true=0, false=0
i
f ((res : server/request.c line=784 column=17
r
es = : pass=0
=
 resolve_symlink : enter=0, leave=0

resolve_symlink : server/request.c line=341 column=12
r
esolve_symlink(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, &thisinfo : server/request.c line=644 column=21
t
hisinfo,
1046                                           opts : server/request.c line=643 column=21
o
pts.opts : server/request.c line=416 column=25
o
pts, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool)) != : true=0, false=0
!
= OK) {
1047                    ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_ERR, 0, r : server/request.c line=466 column=48
r
,
1048                                  "Symbolic link not allowed "
1049                                  "or link target not accessible: %s",
1050                                  r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
1051                    return : pass=0
r
eturn r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 res : server/request.c line=784 column=17
r
es;
1052                }
1053            }
1054
1055            /* Ok, we are done with the link's info, test the real target
1056             */
1057            if : true=0, false=0
i
f (thisinfo : server/request.c line=644 column=21
t
hisinfo.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
APR_REG : /usr/include/apr-1/apr_file_info.h line=64 column=5 APR_REG || : true=0, false=0
|
|
1058                thisinfo : server/request.c line=644 column=21
t
hisinfo.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
APR_NOFILE : /usr/include/apr-1/apr_file_info.h line=63 column=5 APR_NOFILE) {
1059                /* That was fun, nothing left for us here
1060                 */
1061                break : pass=0
b
reak;
1062            }
1063            else if : true=0, false=0
i
f (thisinfo : server/request.c line=644 column=21
t
hisinfo.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype != : true=0, false=0
!
APR_DIR : /usr/include/apr-1/apr_file_info.h line=65 column=5 APR_DIR) {
1064                ap_log_rerror : enter=0, leave=0

ap_log_rerror : include/http_log.h line=219 column=18
a
p_log_rerror(APLOG_MARK, APLOG_ERR, 0, r : server/request.c line=466 column=48
r
,
1065                              "Forbidden: %s doesn't point to "
1066                              "a file or directory",
1067                              r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
1068                return : pass=0
r
eturn r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 HTTP_FORBIDDEN;
1069            }
1070
1071            ++ : pass=0
+
+seg : server/request.c line=648 column=22
s
eg;
1072        } while : true=0, false=0
w
hile (thisinfo : server/request.c line=644 column=21
t
hisinfo.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
=
APR_DIR : /usr/include/apr-1/apr_file_info.h line=65 column=5 APR_DIR);
1073
1074        /* If we have _not_ optimized, this is the time to recover
1075         * the final stat result.
1076         */
1077        if : true=0, false=0
i
f (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype || : true=0, false=0
|
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
APR_LNK : /usr/include/apr-1/apr_file_info.h line=69 column=5 APR_LNK) {
1078            r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info = : enter=0, leave=0
=
 thisinfo : server/request.c line=644 column=21
t
hisinfo;
1079        }
1080
1081        /* Now splice the saved path_info back onto any new path_info
1082         */
1083        if : true=0, false=0
i
f (save_path_info : server/request.c line=645 column=15
s
ave_path_info) {
1084            if : true=0, false=0
i
f (r : server/request.c line=466 column=48
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>path_info : include/httpd.h line=953 column=11
p
ath_info && : true=0, false=0
&
MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info) {
1085                r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info = : enter=0, leave=0
=
 ap_make_full_path : enter=0, leave=0

ap_make_full_path : include/httpd.h line=1600 column=20
a
p_make_full_path(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info,
1086                                                 save_path_info : server/request.c line=645 column=15
s
ave_path_info);
1087            }
1088            else {
1089                r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info = : enter=0, leave=0
=
 save_path_info : server/request.c line=645 column=15
s
ave_path_info;
1090            }
1091        }
1092
1093        /*
1094         * Now we'll deal with the regexes, note we pick up sec_idx
1095         * where we left off (we gave up after we hit entry_core->r)
1096         */
1097        for : true=0, false=0
f
or (; sec_idx : server/request.c line=639 column=13
s
ec_idx < : true=0, false=0
<
 num_sec : server/request.c line=472 column=9
n
um_sec; ++ : pass=0
+
+sec_idx : server/request.c line=639 column=13
s
ec_idx) {
1098
1099            core_dir_config *entry_core;
1100            entry_core : server/request.c line=1099 column=30
e
ntry_core = : pass=0
=
 ap_get_module_config(sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx], &core_module : include/http_core.h line=345 column=31
c
ore_module);
1101
1102            if : true=0, false=0
i
f (! : true=0, false=0
!
entry_core : server/request.c line=1099 column=30
e
ntry_core-> : enter=0, leave=0
-
>r : include/http_core.h line=543 column=17
r
) {
1103                continue : pass=0
c
ontinue;
1104            }
1105
1106            if : true=0, false=0
i
f (ap_regexec : enter=0, leave=0

ap_regexec : include/ap_regex.h line=119 column=17
a
p_regexec(entry_core : server/request.c line=1099 column=30
e
ntry_core-> : enter=0, leave=0
-
>r : include/http_core.h line=543 column=17
r
r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, 0, NULL, AP_REG_NOTEOL)) {
1107                continue : pass=0
c
ontinue;
1108            }
1109
1110            /* If we haven't already continue'd above, we have a match.
1111             *
1112             * Calculate our full-context core opts & override.
1113             */
1114            core_opts_merge : enter=0, leave=0

core_opts_merge : server/request.c line=423 column=13
c
ore_opts_merge(sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx], &opts : server/request.c line=643 column=21
o
pts);
1115
1116            /* If we merged this same section last time, reuse it
1117             */
1118            if : true=0, false=0
i
f (matches : server/request.c line=640 column=13
m
atches) {
1119                if : true=0, false=0
i
f (last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>matched : server/request.c line=260 column=23
m
atched == : true=0, false=0
=
sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx]) {
1120                    now_merged : server/request.c line=468 column=23
n
ow_merged = : pass=0
=
 last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>merged : server/request.c line=261 column=23
m
erged;
1121                    ++ : pass=0
+
+last_walk : server/request.c line=641 column=24
l
ast_walk;
1122                    -- : pass=0
-
-matches : server/request.c line=640 column=13
m
atches;
1123                    continue : pass=0
c
ontinue;
1124                }
1125
1126                /* We fell out of sync.  This is our own copy of walked,
1127                 * so truncate the remaining matches and reset remaining.
1128                 */
1129                cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts -= : enter=0, leave=0
-
matches : server/request.c line=640 column=13
m
atches;
1130                matches : server/request.c line=640 column=13
m
atches = : pass=0
=
 0;
1131            }
1132
1133            if : true=0, false=0
i
f (now_merged : server/request.c line=468 column=23
n
ow_merged) {
1134                now_merged : server/request.c line=468 column=23
n
ow_merged = : pass=0
=
 ap_merge_per_dir_configs : enter=0, leave=0

ap_merge_per_dir_configs : include/http_config.h line=852 column=36
a
p_merge_per_dir_configs(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
1135                                                      now_merged : server/request.c line=468 column=23
n
ow_merged,
1136                                                      sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx]);
1137            }
1138            else {
1139                now_merged : server/request.c line=468 column=23
n
ow_merged = : pass=0
=
 sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx];
1140            }
1141
1142            last_walk : server/request.c line=641 column=24
l
ast_walk = : pass=0
=
 (walk_walked_t*)apr_array_push : enter=0, leave=0

apr_array_push : /usr/include/apr-1/apr_tables.h line=121 column=21
a
pr_array_push(cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked);
1143            last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>matched : server/request.c line=260 column=23
m
atched = : enter=0, leave=0
=
 sec_ent : server/request.c line=471 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=639 column=13
s
ec_idx];
1144            last_walk : server/request.c line=641 column=24
l
ast_walk-> : enter=0, leave=0
-
>merged : server/request.c line=261 column=23
m
erged = : enter=0, leave=0
=
 now_merged : server/request.c line=468 column=23
n
ow_merged;
1145        }
1146
1147        /* Whoops - everything matched in sequence, but the original walk
1148         * found some additional matches.  Truncate them.
1149         */
1150        if : true=0, false=0
i
f (matches : server/request.c line=640 column=13
m
atches) {
1151            cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts -= : enter=0, leave=0
-
matches : server/request.c line=640 column=13
m
atches;
1152        }
1153    }
1154
1155/* It seems this shouldn't be needed anymore.  We translated the
1156 x symlink above into a real resource, and should have died up there.
1157 x Even if we keep this, it needs more thought (maybe an r->file_is_symlink)
1158 x perhaps it should actually happen in file_walk, so we catch more
1159 x obscure cases in autoindex subrequests, etc.
1160 x
1161 x    * Symlink permissions are determined by the parent.  If the request is
1162 x    * for a directory then applying the symlink test here would use the
1163 x    * permissions of the directory as opposed to its parent.  Consider a
1164 x    * symlink pointing to a dir with a .htaccess disallowing symlinks.  If
1165 x    * you access /symlink (or /symlink/) you would get a 403 without this
1166 x    * APR_DIR test.  But if you accessed /symlink/index.html, for example,
1167 x    * you would *not* get the 403.
1168 x
1169 x   if (r->finfo.filetype != APR_DIR
1170 x       && (res = resolve_symlink(r->filename, r->info, ap_allow_options(r),
1171 x                                 r->pool))) {
1172 x       ap_log_rerror(APLOG_MARK, APLOG_ERR, 0, r,
1173 x                     "Symbolic link not allowed: %s", r->filename);
1174 x       return res;
1175 x   }
1176 */
1177
1178    /* Save future sub-requestors much angst in processing
1179     * this subrequest.  If dir_walk couldn't canonicalize
1180     * the file path, nothing can.
1181     */
1182    r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>canonical_filename : include/httpd.h line=951 column=11
c
anonical_filename = : enter=0, leave=0
=
 r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename;
1183
1184    if : true=0, false=0
i
f (r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
=
APR_DIR : /usr/include/apr-1/apr_file_info.h line=65 column=5 APR_DIR) {
1185        cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached = : enter=0, leave=0
=
 r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename;
1186    }
1187    else {
1188        cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached = : enter=0, leave=0
=
 ap_make_dirstr_parent : enter=0, leave=0

ap_make_dirstr_parent : include/httpd.h line=1586 column=20
a
p_make_dirstr_parent(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
1189    }
1190
1191    cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_tested : server/request.c line=266 column=25
d
ir_conf_tested = : enter=0, leave=0
=
 sec_ent : server/request.c line=471 column=24
s
ec_ent;
1192    cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_merged : server/request.c line=267 column=25
d
ir_conf_merged = : enter=0, leave=0
=
 r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config;
1193
1194    /* Merge our cache->dir_conf_merged construct with the r->per_dir_configs,
1195     * and note the end result to (potentially) skip this step next time.
1196     */
1197    if : true=0, false=0
i
f (now_merged : server/request.c line=468 column=23
n
ow_merged) {
1198        r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config = : enter=0, leave=0
=
 ap_merge_per_dir_configs : enter=0, leave=0

ap_merge_per_dir_configs : include/http_config.h line=852 column=36
a
p_merge_per_dir_configs(r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
1199                                                     r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config,
1200                                                     now_merged : server/request.c line=468 column=23
n
ow_merged);
1201    }
1202    cache : server/request.c line=473 column=19
c
ache-> : enter=0, leave=0
-
>per_dir_result : server/request.c line=268 column=25
p
er_dir_result = : enter=0, leave=0
=
 r : server/request.c line=466 column=48
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config;
1203
1204    return : pass=0
r
eturn OK;
1205}
1206
1207
1208AP_DECLARE(int) ap_location_walk : call=0
a
p_location_walk(request_rec *r)
1209{
1210    ap_conf_vector_t *now_merged = NULL;
1211    core_server_config *sconf = ap_get_module_config(r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>module_config : include/httpd.h line=1207 column=30
m
odule_config,
1212                                                     &core_module : include/http_core.h line=345 column=31
c
ore_module);
1213    ap_conf_vector_t **sec_ent = (ap_conf_vector_t **)sconf : server/request.c line=1211 column=25
s
conf-> : enter=0, leave=0
-
>sec_url : include/http_core.h line=610 column=25
s
ec_url-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
1214    int num_sec = sconf : server/request.c line=1211 column=25
s
conf-> : enter=0, leave=0
-
>sec_url : include/http_core.h line=610 column=25
s
ec_url-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts;
1215    walk_cache_t *cache;
1216    const char *entry_uri;
1217
1218    /* No tricks here, there are no <Locations > to parse in this vhost.
1219     * We won't destroy the cache, just in case _this_ redirect is later
1220     * redirected again to a vhost with <Location > blocks to optimize.
1221     */
1222    if : true=0, false=0
i
f (! : true=0, false=0
!
num_sec : server/request.c line=1214 column=9
n
um_sec) {
1223        return : pass=0
r
eturn OK;
1224    }
1225
1226    cache : server/request.c line=1215 column=19
c
ache = : pass=0
=
 prep_walk_cache : enter=0, leave=0

prep_walk_cache : server/request.c line=272 column=22
p
rep_walk_cache(AP_NOTE_LOCATION_WALK, r : server/request.c line=1208 column=47
r
);
1227
1228    /* Location and LocationMatch differ on their behaviour w.r.t. multiple
1229     * slashes.  Location matches multiple slashes with a single slash,
1230     * LocationMatch doesn't.  An exception, for backwards brokenness is
1231     * absoluteURIs... in which case neither match multiple slashes.
1232     */
1233    if : true=0, false=0
i
f (r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri[] : enter=0, leave=0
[
0] != : true=0, false=0
!
= '/') {
1234        entry_uri : server/request.c line=1216 column=17
e
ntry_uri = : pass=0
=
 r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri;
1235    }
1236    else {
1237        char *uri = apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
1238        ap_no2slash : enter=0, leave=0

ap_no2slash : include/httpd.h line=1476 column=18
a
p_no2slash(uri : server/request.c line=1237 column=15
u
ri);
1239        entry_uri : server/request.c line=1216 column=17
e
ntry_uri = : pass=0
=
 uri : server/request.c line=1237 column=15
u
ri;
1240    }
1241
1242    /* If we have an cache->cached location that matches r->uri,
1243     * and the vhost's list of locations hasn't changed, we can skip
1244     * rewalking the location_walk entries.
1245     */
1246    if : true=0, false=0
i
f (cache : server/request.c line=1215 column=19
c
acheMC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>cached : server/request.c line=265 column=25
c
ached
1247        && : true=0, false=0
&
& (cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_tested : server/request.c line=266 column=25
d
ir_conf_tested == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
sec_ent : server/request.c line=1213 column=24
s
ec_ent)
1248        && : true=0, false=0
&
& (strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
s
trcmp(entry_uri : server/request.c line=1216 column=17
e
ntry_uri, cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached) == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 0)) {
1249        /* Well this looks really familiar!  If our end-result (per_dir_result)
1250         * didn't change, we have absolutely nothing to do :)
1251         * Otherwise (as is the case with most dir_merged/file_merged requests)
1252         * we must merge our dir_conf_merged onto this new r->per_dir_config.
1253         */
1254        if : true=0, false=0
i
f (r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config == : true=0, false=0
=
cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>per_dir_result : server/request.c line=268 column=25
p
er_dir_result) {
1255            return : pass=0
r
eturn OK;
1256        }
1257
1258        if : true=0, false=0
i
f (r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config == : true=0, false=0
=
cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_merged : server/request.c line=267 column=25
d
ir_conf_merged) {
1259            r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config = : enter=0, leave=0
=
 cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>per_dir_result : server/request.c line=268 column=25
p
er_dir_result;
1260            return : pass=0
r
eturn OK;
1261        }
1262
1263        if : true=0, false=0
i
f (cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts) {
1264            now_merged : server/request.c line=1210 column=23
n
ow_merged = : pass=0
=
 ((walk_walked_t*)cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts)
1265                                            [] : enter=0, leave=0
[
cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts - : pass=0
-
 1].merged : server/request.c line=261 column=23
m
erged;
1266        }
1267    }
1268    else {
1269        /* We start now_merged from NULL since we want to build
1270         * a locations list that can be merged to any vhost.
1271         */
1272        int len, sec_idx;
1273        int matches = cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts;
1274        walk_walked_t *last_walk = (walk_walked_t*)cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
1275        cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached = : enter=0, leave=0
=
 entry_uri : server/request.c line=1216 column=17
e
ntry_uri;
1276
1277        /* Go through the location entries, and check for matches.
1278         * We apply the directive sections in given order, we should
1279         * really try them with the most general first.
1280         */
1281        for : true=0, false=0
f
or (sec_idx : server/request.c line=1272 column=18
s
ec_idx = : pass=0
=
 0; sec_idx : server/request.c line=1272 column=18
s
ec_idx < : true=0, false=0
<
 num_sec : server/request.c line=1214 column=9
n
um_sec; ++ : pass=0
+
+sec_idx : server/request.c line=1272 column=18
s
ec_idx) {
1282
1283            core_dir_config *entry_core;
1284            entry_core : server/request.c line=1283 column=30
e
ntry_core = : pass=0
=
 ap_get_module_config(sec_ent : server/request.c line=1213 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=1272 column=18
s
ec_idx], &core_module : include/http_core.h line=345 column=31
c
ore_module);
1285
1286            /* ### const strlen can be optimized in location config parsing */
1287            len : server/request.c line=1272 column=13
l
en = : pass=0
=
 strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(entry_core : server/request.c line=1283 column=30
e
ntry_core-> : enter=0, leave=0
-
>d : include/http_core.h line=452 column=11
d
);
1288
1289            /* Test the regex, fnmatch or string as appropriate.
1290             * If it's a strcmp, and the <Location > pattern was
1291             * not slash terminated, then this uri must be slash
1292             * terminated (or at the end of the string) to match.
1293             */
1294            if : true=0, false=0
i
f (entry_core : server/request.c line=1283 column=30
e
ntry_core-> : enter=0, leave=0
-
>r : include/http_core.h line=543 column=17
r
1295                conditional operator : true=0, false=0
?
 ap_regexec : enter=0, leave=0

ap_regexec : include/ap_regex.h line=119 column=17
a
p_regexec(entry_core : server/request.c line=1283 column=30
e
ntry_core-> : enter=0, leave=0
-
>r : include/http_core.h line=543 column=17
r
r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri, 0, NULL, 0)
1296                : (entry_core : server/request.c line=1283 column=30
e
ntry_core-> : enter=0, leave=0
-
>d_is_fnmatch : include/http_core.h line=511 column=14
d
_is_fnmatch
1297                   conditional operator : true=0, false=0
?
 apr_fnmatch : enter=0, leave=0

apr_fnmatch : /usr/include/apr-1/apr_fnmatch.h line=122 column=27
a
pr_fnmatch(entry_core : server/request.c line=1283 column=30
e
ntry_core-> : enter=0, leave=0
-
>d : include/http_core.h line=452 column=11
d
cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached, APR_FNM_PATHNAME)
1298                   : (MC/DC independently affect : true=0, false=0
strncmp : enter=0, leave=0

strncmp : /usr/include/string.h line=146 column=12
sTF
trncmp(entry_core : server/request.c line=1283 column=30
e
ntry_core-> : enter=0, leave=0
-
>d : include/http_core.h line=452 column=11
d
cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached, len : server/request.c line=1272 column=13
l
en)
1299                      || : true=0, false=0
|
| (entry_core : server/request.c line=1283 column=30
e
ntry_core-> : enter=0, leave=0
-
>d : include/http_core.h line=452 column=11
d
[] : enter=0, leave=0
[
len : server/request.c line=1272 column=13
l
en - : pass=0
-
 1] != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= '/'
1300                          && : true=0, false=0
&
cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached[] : enter=0, leave=0
[
len : server/request.c line=1272 column=13
l
en] != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= '/'
1301                          && : true=0, false=0
&
cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached[] : enter=0, leave=0
[
len : server/request.c line=1272 column=13
l
en] != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= '\0')))) {
1302                continue : pass=0
c
ontinue;
1303            }
1304
1305            /* If we merged this same section last time, reuse it
1306             */
1307            if : true=0, false=0
i
f (matches : server/request.c line=1273 column=13
m
atches) {
1308                if : true=0, false=0
i
f (last_walk : server/request.c line=1274 column=24
l
ast_walk-> : enter=0, leave=0
-
>matched : server/request.c line=260 column=23
m
atched == : true=0, false=0
=
sec_ent : server/request.c line=1213 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=1272 column=18
s
ec_idx]) {
1309                    now_merged : server/request.c line=1210 column=23
n
ow_merged = : pass=0
=
 last_walk : server/request.c line=1274 column=24
l
ast_walk-> : enter=0, leave=0
-
>merged : server/request.c line=261 column=23
m
erged;
1310                    ++ : pass=0
+
+last_walk : server/request.c line=1274 column=24
l
ast_walk;
1311                    -- : pass=0
-
-matches : server/request.c line=1273 column=13
m
atches;
1312                    continue : pass=0
c
ontinue;
1313                }
1314
1315                /* We fell out of sync.  This is our own copy of walked,
1316                 * so truncate the remaining matches and reset remaining.
1317                 */
1318                cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts -= : enter=0, leave=0
-
matches : server/request.c line=1273 column=13
m
atches;
1319                matches : server/request.c line=1273 column=13
m
atches = : pass=0
=
 0;
1320            }
1321
1322            if : true=0, false=0
i
f (now_merged : server/request.c line=1210 column=23
n
ow_merged) {
1323                now_merged : server/request.c line=1210 column=23
n
ow_merged = : pass=0
=
 ap_merge_per_dir_configs : enter=0, leave=0

ap_merge_per_dir_configs : include/http_config.h line=852 column=36
a
p_merge_per_dir_configs(r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
1324                                                      now_merged : server/request.c line=1210 column=23
n
ow_merged,
1325                                                      sec_ent : server/request.c line=1213 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=1272 column=18
s
ec_idx]);
1326            }
1327            else {
1328                now_merged : server/request.c line=1210 column=23
n
ow_merged = : pass=0
=
 sec_ent : server/request.c line=1213 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=1272 column=18
s
ec_idx];
1329            }
1330
1331            last_walk : server/request.c line=1274 column=24
l
ast_walk = : pass=0
=
 (walk_walked_t*)apr_array_push : enter=0, leave=0

apr_array_push : /usr/include/apr-1/apr_tables.h line=121 column=21
a
pr_array_push(cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked);
1332            last_walk : server/request.c line=1274 column=24
l
ast_walk-> : enter=0, leave=0
-
>matched : server/request.c line=260 column=23
m
atched = : enter=0, leave=0
=
 sec_ent : server/request.c line=1213 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=1272 column=18
s
ec_idx];
1333            last_walk : server/request.c line=1274 column=24
l
ast_walk-> : enter=0, leave=0
-
>merged : server/request.c line=261 column=23
m
erged = : enter=0, leave=0
=
 now_merged : server/request.c line=1210 column=23
n
ow_merged;
1334        }
1335
1336        /* Whoops - everything matched in sequence, but the original walk
1337         * found some additional matches.  Truncate them.
1338         */
1339        if : true=0, false=0
i
f (matches : server/request.c line=1273 column=13
m
atches) {
1340            cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts -= : enter=0, leave=0
-
matches : server/request.c line=1273 column=13
m
atches;
1341        }
1342    }
1343
1344    cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_tested : server/request.c line=266 column=25
d
ir_conf_tested = : enter=0, leave=0
=
 sec_ent : server/request.c line=1213 column=24
s
ec_ent;
1345    cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_merged : server/request.c line=267 column=25
d
ir_conf_merged = : enter=0, leave=0
=
 r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config;
1346
1347    /* Merge our cache->dir_conf_merged construct with the r->per_dir_configs,
1348     * and note the end result to (potentially) skip this step next time.
1349     */
1350    if : true=0, false=0
i
f (now_merged : server/request.c line=1210 column=23
n
ow_merged) {
1351        r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config = : enter=0, leave=0
=
 ap_merge_per_dir_configs : enter=0, leave=0

ap_merge_per_dir_configs : include/http_config.h line=852 column=36
a
p_merge_per_dir_configs(r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
1352                                                     r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config,
1353                                                     now_merged : server/request.c line=1210 column=23
n
ow_merged);
1354    }
1355    cache : server/request.c line=1215 column=19
c
ache-> : enter=0, leave=0
-
>per_dir_result : server/request.c line=268 column=25
p
er_dir_result = : enter=0, leave=0
=
 r : server/request.c line=1208 column=47
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config;
1356
1357    return : pass=0
r
eturn OK;
1358}
1359
1360AP_DECLARE(int) ap_file_walk : call=0
a
p_file_walk(request_rec *r)
1361{
1362    ap_conf_vector_t *now_merged = NULL;
1363    core_dir_config *dconf = ap_get_module_config(r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config,
1364                                                  &core_module : include/http_core.h line=345 column=31
c
ore_module);
1365    ap_conf_vector_t **sec_ent = (ap_conf_vector_t **)dconf : server/request.c line=1363 column=22
d
conf-> : enter=0, leave=0
-
>sec_file : include/http_core.h line=542 column=25
s
ec_file-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
1366    int num_sec = dconf : server/request.c line=1363 column=22
d
conf-> : enter=0, leave=0
-
>sec_file : include/http_core.h line=542 column=25
s
ec_file-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts;
1367    walk_cache_t *cache;
1368    const char *test_file;
1369
1370    /* To allow broken modules to proceed, we allow missing filenames to pass.
1371     * We will catch it later if it's heading for the core handler.
1372     * directory_walk already posted an INFO note for module debugging.
1373     */
1374    if : true=0, false=0
i
f (r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename == : true=0, false=0
=
= NULL) {
1375        return : pass=0
r
eturn OK;
1376    }
1377
1378    cache : server/request.c line=1367 column=19
c
ache = : pass=0
=
 prep_walk_cache : enter=0, leave=0

prep_walk_cache : server/request.c line=272 column=22
p
rep_walk_cache(AP_NOTE_FILE_WALK, r : server/request.c line=1360 column=43
r
);
1379
1380    /* No tricks here, there are just no <Files > to parse in this context.
1381     * We won't destroy the cache, just in case _this_ redirect is later
1382     * redirected again to a context containing the same or similar <Files >.
1383     */
1384    if : true=0, false=0
i
f (! : true=0, false=0
!
num_sec : server/request.c line=1366 column=9
n
um_sec) {
1385        return : pass=0
r
eturn OK;
1386    }
1387
1388    /* Get the basename .. and copy for the cache just
1389     * in case r->filename is munged by another module
1390     */
1391    test_file : server/request.c line=1368 column=17
t
est_file = : pass=0
=
 strrchr : enter=0, leave=0

strrchr : /usr/include/string.h line=262 column=14
s
trrchr(r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, '/');
1392    if : true=0, false=0
i
f (test_file : server/request.c line=1368 column=17
t
est_file == : true=0, false=0
=
= NULL) {
1393        test_file : server/request.c line=1368 column=17
t
est_file = : pass=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
1394    }
1395    else {
1396        test_file : server/request.c line=1368 column=17
t
est_file = : pass=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, ++ : pass=0
+
+test_file : server/request.c line=1368 column=17
t
est_file);
1397    }
1398
1399    /* If we have an cache->cached file name that matches test_file,
1400     * and the directory's list of file sections hasn't changed, we
1401     * can skip rewalking the file_walk entries.
1402     */
1403    if : true=0, false=0
i
f (cache : server/request.c line=1367 column=19
c
acheMC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>cached : server/request.c line=265 column=25
c
ached
1404        && : true=0, false=0
&
& (cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_tested : server/request.c line=266 column=25
d
ir_conf_tested == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
sec_ent : server/request.c line=1365 column=24
s
ec_ent)
1405        && : true=0, false=0
&
& (strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
s
trcmp(test_file : server/request.c line=1368 column=17
t
est_file, cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached) == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 0)) {
1406        /* Well this looks really familiar!  If our end-result (per_dir_result)
1407         * didn't change, we have absolutely nothing to do :)
1408         * Otherwise (as is the case with most dir_merged requests)
1409         * we must merge our dir_conf_merged onto this new r->per_dir_config.
1410         */
1411        if : true=0, false=0
i
f (r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config == : true=0, false=0
=
cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>per_dir_result : server/request.c line=268 column=25
p
er_dir_result) {
1412            return : pass=0
r
eturn OK;
1413        }
1414
1415        if : true=0, false=0
i
f (r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config == : true=0, false=0
=
cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_merged : server/request.c line=267 column=25
d
ir_conf_merged) {
1416            r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config = : enter=0, leave=0
=
 cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>per_dir_result : server/request.c line=268 column=25
p
er_dir_result;
1417            return : pass=0
r
eturn OK;
1418        }
1419
1420        if : true=0, false=0
i
f (cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts) {
1421            now_merged : server/request.c line=1362 column=23
n
ow_merged = : pass=0
=
 ((walk_walked_t*)cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts)
1422                [] : enter=0, leave=0
[
cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts - : pass=0
-
 1].merged : server/request.c line=261 column=23
m
erged;
1423        }
1424    }
1425    else {
1426        /* We start now_merged from NULL since we want to build
1427         * a file section list that can be merged to any dir_walk.
1428         */
1429        int sec_idx;
1430        int matches = cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts;
1431        walk_walked_t *last_walk = (walk_walked_t*)cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
1432        cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached = : enter=0, leave=0
=
 test_file : server/request.c line=1368 column=17
t
est_file;
1433
1434        /* Go through the location entries, and check for matches.
1435         * We apply the directive sections in given order, we should
1436         * really try them with the most general first.
1437         */
1438        for : true=0, false=0
f
or (sec_idx : server/request.c line=1429 column=13
s
ec_idx = : pass=0
=
 0; sec_idx : server/request.c line=1429 column=13
s
ec_idx < : true=0, false=0
<
 num_sec : server/request.c line=1366 column=9
n
um_sec; ++ : pass=0
+
+sec_idx : server/request.c line=1429 column=13
s
ec_idx) {
1439
1440            core_dir_config *entry_core;
1441            entry_core : server/request.c line=1440 column=30
e
ntry_core = : pass=0
=
 ap_get_module_config(sec_ent : server/request.c line=1365 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=1429 column=13
s
ec_idx], &core_module : include/http_core.h line=345 column=31
c
ore_module);
1442
1443            if : true=0, false=0
i
f (entry_core : server/request.c line=1440 column=30
e
ntry_core-> : enter=0, leave=0
-
>r : include/http_core.h line=543 column=17
r
1444                conditional operator : true=0, false=0
?
 ap_regexec : enter=0, leave=0

ap_regexec : include/ap_regex.h line=119 column=17
a
p_regexec(entry_core : server/request.c line=1440 column=30
e
ntry_core-> : enter=0, leave=0
-
>r : include/http_core.h line=543 column=17
r
cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached , 0, NULL, 0)
1445                : (entry_core : server/request.c line=1440 column=30
e
ntry_core-> : enter=0, leave=0
-
>d_is_fnmatch : include/http_core.h line=511 column=14
d
_is_fnmatch
1446                   conditional operator : true=0, false=0
?
 apr_fnmatch : enter=0, leave=0

apr_fnmatch : /usr/include/apr-1/apr_fnmatch.h line=122 column=27
a
pr_fnmatch(entry_core : server/request.c line=1440 column=30
e
ntry_core-> : enter=0, leave=0
-
>d : include/http_core.h line=452 column=11
d
cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached, APR_FNM_PATHNAME)
1447                   : strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
s
trcmp(entry_core : server/request.c line=1440 column=30
e
ntry_core-> : enter=0, leave=0
-
>d : include/http_core.h line=452 column=11
d
cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>cached : server/request.c line=265 column=25
c
ached))) {
1448                continue : pass=0
c
ontinue;
1449            }
1450
1451            /* If we merged this same section last time, reuse it
1452             */
1453            if : true=0, false=0
i
f (matches : server/request.c line=1430 column=13
m
atches) {
1454                if : true=0, false=0
i
f (last_walk : server/request.c line=1431 column=24
l
ast_walk-> : enter=0, leave=0
-
>matched : server/request.c line=260 column=23
m
atched == : true=0, false=0
=
sec_ent : server/request.c line=1365 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=1429 column=13
s
ec_idx]) {
1455                    now_merged : server/request.c line=1362 column=23
n
ow_merged = : pass=0
=
 last_walk : server/request.c line=1431 column=24
l
ast_walk-> : enter=0, leave=0
-
>merged : server/request.c line=261 column=23
m
erged;
1456                    ++ : pass=0
+
+last_walk : server/request.c line=1431 column=24
l
ast_walk;
1457                    -- : pass=0
-
-matches : server/request.c line=1430 column=13
m
atches;
1458                    continue : pass=0
c
ontinue;
1459                }
1460
1461                /* We fell out of sync.  This is our own copy of walked,
1462                 * so truncate the remaining matches and reset remaining.
1463                 */
1464                cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts -= : enter=0, leave=0
-
matches : server/request.c line=1430 column=13
m
atches;
1465                matches : server/request.c line=1430 column=13
m
atches = : pass=0
=
 0;
1466            }
1467
1468            if : true=0, false=0
i
f (now_merged : server/request.c line=1362 column=23
n
ow_merged) {
1469                now_merged : server/request.c line=1362 column=23
n
ow_merged = : pass=0
=
 ap_merge_per_dir_configs : enter=0, leave=0

ap_merge_per_dir_configs : include/http_config.h line=852 column=36
a
p_merge_per_dir_configs(r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
1470                                                      now_merged : server/request.c line=1362 column=23
n
ow_merged,
1471                                                      sec_ent : server/request.c line=1365 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=1429 column=13
s
ec_idx]);
1472            }
1473            else {
1474                now_merged : server/request.c line=1362 column=23
n
ow_merged = : pass=0
=
 sec_ent : server/request.c line=1365 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=1429 column=13
s
ec_idx];
1475            }
1476
1477            last_walk : server/request.c line=1431 column=24
l
ast_walk = : pass=0
=
 (walk_walked_t*)apr_array_push : enter=0, leave=0

apr_array_push : /usr/include/apr-1/apr_tables.h line=121 column=21
a
pr_array_push(cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked);
1478            last_walk : server/request.c line=1431 column=24
l
ast_walk-> : enter=0, leave=0
-
>matched : server/request.c line=260 column=23
m
atched = : enter=0, leave=0
=
 sec_ent : server/request.c line=1365 column=24
s
ec_ent[] : enter=0, leave=0
[
sec_idx : server/request.c line=1429 column=13
s
ec_idx];
1479            last_walk : server/request.c line=1431 column=24
l
ast_walk-> : enter=0, leave=0
-
>merged : server/request.c line=261 column=23
m
erged = : enter=0, leave=0
=
 now_merged : server/request.c line=1362 column=23
n
ow_merged;
1480        }
1481
1482        /* Whoops - everything matched in sequence, but the original walk
1483         * found some additional matches.  Truncate them.
1484         */
1485        if : true=0, false=0
i
f (matches : server/request.c line=1430 column=13
m
atches) {
1486            cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>walked : server/request.c line=269 column=25
w
alked-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts -= : enter=0, leave=0
-
matches : server/request.c line=1430 column=13
m
atches;
1487        }
1488    }
1489
1490    cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_tested : server/request.c line=266 column=25
d
ir_conf_tested = : enter=0, leave=0
=
 sec_ent : server/request.c line=1365 column=24
s
ec_ent;
1491    cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>dir_conf_merged : server/request.c line=267 column=25
d
ir_conf_merged = : enter=0, leave=0
=
 r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config;
1492
1493    /* Merge our cache->dir_conf_merged construct with the r->per_dir_configs,
1494     * and note the end result to (potentially) skip this step next time.
1495     */
1496    if : true=0, false=0
i
f (now_merged : server/request.c line=1362 column=23
n
ow_merged) {
1497        r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config = : enter=0, leave=0
=
 ap_merge_per_dir_configs : enter=0, leave=0

ap_merge_per_dir_configs : include/http_config.h line=852 column=36
a
p_merge_per_dir_configs(r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
1498                                                     r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config,
1499                                                     now_merged : server/request.c line=1362 column=23
n
ow_merged);
1500    }
1501    cache : server/request.c line=1367 column=19
c
ache-> : enter=0, leave=0
-
>per_dir_result : server/request.c line=268 column=25
p
er_dir_result = : enter=0, leave=0
=
 r : server/request.c line=1360 column=43
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config;
1502
1503    return : pass=0
r
eturn OK;
1504}
1505
1506/*****************************************************************
1507 *
1508 * The sub_request mechanism.
1509 *
1510 * Fns to look up a relative URI from, e.g., a map file or SSI document.
1511 * These do all access checks, etc., but don't actually run the transaction
1512 * ... use run_sub_req below for that.  Also, be sure to use destroy_sub_req
1513 * as appropriate if you're likely to be creating more than a few of these.
1514 * (An early Apache version didn't destroy the sub_reqs used in directory
1515 * indexing.  The result, when indexing a directory with 800-odd files in
1516 * it, was massively excessive storage allocation).
1517 *
1518 * Note more manipulation of protocol-specific vars in the request
1519 * structure...
1520 */
1521
1522static request_rec *make_sub_request : call=0
m
ake_sub_request(const request_rec *r,
1523                                     ap_filter_t *next_filter)
1524{
1525    apr_pool_t *rrp;
1526    request_rec *rnew;
1527
1528    apr_pool_create(&rrp : server/request.c line=1525 column=17
r
rp, r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool);
1529    apr_pool_tag : enter=0, leave=0

apr_pool_tag : /usr/include/apr-1/apr_pools.h line=513 column=19
a
pr_pool_tag(rrp : server/request.c line=1525 column=17
r
rp, "subrequest");
1530    rnew : server/request.c line=1526 column=18
r
new = : pass=0
=
 apr_pcalloc(rrp : server/request.c line=1525 column=17
r
rp, sizeof(request_rec));
1531    rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool = : enter=0, leave=0
=
 rrp : server/request.c line=1525 column=17
r
rp;
1532
1533    rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>hostname : include/httpd.h line=814 column=17
h
ostname       = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>hostname : include/httpd.h line=814 column=17
h
ostname;
1534    rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>request_time : include/httpd.h line=817 column=16
r
equest_time   = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>request_time : include/httpd.h line=817 column=16
r
equest_time;
1535    rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection     = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection;
1536    rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver         = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver;
1537
1538    rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>request_config : include/httpd.h line=979 column=30
r
equest_config = : enter=0, leave=0
=
 ap_create_request_config : enter=0, leave=0

ap_create_request_config : include/http_config.h line=837 column=36
a
p_create_request_config(rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool);
1539
1540    /* Start a clean config from this subrequest's vhost.  Optimization in
1541     * Location/File/Dir walks from the parent request assure that if the
1542     * config blocks of the subrequest match the parent request, no merges
1543     * will actually occur (and generally a minimal number of merges are
1544     * required, even if the parent and subrequest aren't quite identical.)
1545     */
1546    rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>lookup_defaults : include/httpd.h line=1209 column=30
l
ookup_defaults;
1547
1548    rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>htaccess : include/httpd.h line=987 column=35
h
taccess = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>htaccess : include/httpd.h line=987 column=35
h
taccess;
1549    rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>allowed_methods : include/httpd.h line=857 column=23
a
llowed_methods = : enter=0, leave=0
=
 ap_make_method_list : enter=0, leave=0

ap_make_method_list : include/http_protocol.h line=253 column=32
a
p_make_method_list(rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, 2);
1550
1551    /* make a copy of the allowed-methods list */
1552    ap_copy_method_list : enter=0, leave=0

ap_copy_method_list : include/http_protocol.h line=262 column=18
a
p_copy_method_list(rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>allowed_methods : include/httpd.h line=857 column=23
a
llowed_methods, r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>allowed_methods : include/httpd.h line=857 column=23
a
llowed_methods);
1553
1554    /* start with the same set of output filters */
1555    if : true=0, false=0
i
f (next_filter : server/request.c line=1523 column=51
n
ext_filter) {
1556        /* while there are no input filters for a subrequest, we will
1557         * try to insert some, so if we don't have valid data, the code
1558         * will seg fault.
1559         */
1560        rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>input_filters : include/httpd.h line=992 column=25
i
nput_filters = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>input_filters : include/httpd.h line=992 column=25
i
nput_filters;
1561        rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>proto_input_filters : include/httpd.h line=999 column=25
p
roto_input_filters = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>proto_input_filters : include/httpd.h line=999 column=25
p
roto_input_filters;
1562        rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>output_filters : include/httpd.h line=990 column=25
o
utput_filters = : enter=0, leave=0
=
 next_filter : server/request.c line=1523 column=51
n
ext_filter;
1563        rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>proto_output_filters : include/httpd.h line=996 column=25
p
roto_output_filters = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>proto_output_filters : include/httpd.h line=996 column=25
p
roto_output_filters;
1564        ap_add_output_filter_handle : enter=0, leave=0

ap_add_output_filter_handle : include/util_filter.h line=443 column=27
a
p_add_output_filter_handle(ap_subreq_core_filter_handle : include/http_core.h line=680 column=41
a
p_subreq_core_filter_handle,
1565                                    NULL, rnew : server/request.c line=1526 column=18
r
new, rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection);
1566    }
1567    else {
1568        /* If NULL - we are expecting to be internal_fast_redirect'ed
1569         * to this subrequest - or this request will never be invoked.
1570         * Ignore the original request filter stack entirely, and
1571         * drill the input and output stacks back to the connection.
1572         */
1573        rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>proto_input_filters : include/httpd.h line=999 column=25
p
roto_input_filters = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>proto_input_filters : include/httpd.h line=999 column=25
p
roto_input_filters;
1574        rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>proto_output_filters : include/httpd.h line=996 column=25
p
roto_output_filters = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>proto_output_filters : include/httpd.h line=996 column=25
p
roto_output_filters;
1575
1576        rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>input_filters : include/httpd.h line=992 column=25
i
nput_filters = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>proto_input_filters : include/httpd.h line=999 column=25
p
roto_input_filters;
1577        rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>output_filters : include/httpd.h line=990 column=25
o
utput_filters = : enter=0, leave=0
=
 r : server/request.c line=1522 column=57
r
-> : enter=0, leave=0
-
>proto_output_filters : include/httpd.h line=996 column=25
p
roto_output_filters;
1578    }
1579
1580    /* no input filters for a subrequest */
1581
1582    ap_set_sub_req_protocol : enter=0, leave=0

ap_set_sub_req_protocol : include/http_protocol.h line=683 column=18
a
p_set_sub_req_protocol(rnew : server/request.c line=1526 column=18
r
new, r : server/request.c line=1522 column=57
r
);
1583
1584    /* We have to run this after we fill in sub req vars,
1585     * or the r->main pointer won't be setup
1586     */
1587    ap_run_create_request : enter=0, leave=0

ap_run_create_request : server/ line=4 column=1
a
p_run_create_request(rnew : server/request.c line=1526 column=18
r
new);
1588
1589    /* Begin by presuming any module can make its own path_info assumptions,
1590     * until some module interjects and changes the value.
1591     */
1592    rnew : server/request.c line=1526 column=18
r
new-> : enter=0, leave=0
-
>used_path_info : include/httpd.h line=969 column=9
u
sed_path_info = : enter=0, leave=0
=
 AP_REQ_DEFAULT_PATH_INFO;
1593
1594    return : pass=0
r
eturn rnew : server/request.c line=1526 column=18
r
new;
1595}
1596
1597AP_CORE_DECLARE_NONSTD(apr_status_t) ap_sub_req_output_filter : call=0
a
p_sub_req_output_filter(ap_filter_t *f,
1598                                                              apr_bucket_brigade *bb)
1599{
1600    apr_bucket *e = APR_BRIGADE_LAST(bb : server/request.c line=1598 column=83
b
b);
1601
1602    if : true=0, false=0
i
f (APR_BUCKET_IS_EOS(e : server/request.c line=1600 column=17
e
)) {
1603        apr_bucket_delete(e : server/request.c line=1600 column=17
e
);
1604    }
1605
1606    if : true=0, false=0
i
f (! : true=0, false=0
!
APR_BRIGADE_EMPTY(bb : server/request.c line=1598 column=83
b
b)) {
1607        return : pass=0
r
eturn ap_pass_brigade : enter=0, leave=0

ap_pass_brigade : include/util_filter.h line=312 column=26
a
p_pass_brigade(f : server/request.c line=1597 column=76
f
-> : enter=0, leave=0
-
>next : include/util_filter.h line=271 column=18
n
ext, bb : server/request.c line=1598 column=83
b
b);
1608    }
1609
1610    return : pass=0
r
eturn APR_SUCCESS;
1611}
1612
1613
1614AP_DECLARE(int) ap_some_auth_required : call=0
a
p_some_auth_required(request_rec *r)
1615{
1616    /* Is there a require line configured for the type of *this* req? */
1617
1618    const apr_array_header_t *reqs_arr = ap_requires : enter=0, leave=0

ap_requires : include/http_core.h line=336 column=40
a
p_requires(r : server/request.c line=1614 column=52
r
);
1619    require_line *reqs;
1620    int i;
1621
1622    if : true=0, false=0
i
f (! : true=0, false=0
!
reqs_arr : server/request.c line=1618 column=31
r
eqs_arr) {
1623        return : pass=0
r
eturn 0;
1624    }
1625
1626    reqs : server/request.c line=1619 column=19
r
eqs = : pass=0
=
 (require_line *) reqs_arr : server/request.c line=1618 column=31
r
eqs_arr-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
1627
1628    for : true=0, false=0
f
or (i : server/request.c line=1620 column=9
i
 = : pass=0
=
 0; i : server/request.c line=1620 column=9
i
 < : true=0, false=0
<
 reqs_arr : server/request.c line=1618 column=31
r
eqs_arr-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts; ++ : pass=0
+
+i : server/request.c line=1620 column=9
i
) {
1629        if : true=0, false=0
i
f (reqs : server/request.c line=1619 column=19
r
eqs[] : enter=0, leave=0
[
i : server/request.c line=1620 column=9
i
].method_mask : include/http_core.h line=300 column=17
m
ethod_mask & : pass=0
&
 (AP_METHOD_BIT << : pass=0
<
r : server/request.c line=1614 column=52
r
-> : enter=0, leave=0
-
>method_number : include/httpd.h line=831 column=9
m
ethod_number)) {
1630            return : pass=0
r
eturn 1;
1631        }
1632    }
1633
1634    return : pass=0
r
eturn 0;
1635}
1636
1637
1638AP_DECLARE(request_rec *) ap_sub_req_method_uri : call=0
a
p_sub_req_method_uri(const char *method,
1639                                                const char *new_uri,
1640                                                const request_rec *r,
1641                                                ap_filter_t *next_filter)
1642{
1643    request_rec *rnew;
1644    /* Initialise res, to avoid a gcc warning */
1645    int res = HTTP_INTERNAL_SERVER_ERROR;
1646    char *udir;
1647
1648    rnew : server/request.c line=1643 column=18
r
new = : pass=0
=
 make_sub_request : enter=0, leave=0

make_sub_request : server/request.c line=1522 column=21
m
ake_sub_request(r : server/request.c line=1640 column=68
r
next_filter : server/request.c line=1641 column=62
n
ext_filter);
1649
1650    /* would be nicer to pass "method" to ap_set_sub_req_protocol */
1651    rnew : server/request.c line=1643 column=18
r
new-> : enter=0, leave=0
-
>method : include/httpd.h line=829 column=17
m
ethod = : enter=0, leave=0
=
 method : server/request.c line=1638 column=61
m
ethod;
1652    rnew : server/request.c line=1643 column=18
r
new-> : enter=0, leave=0
-
>method_number : include/httpd.h line=831 column=9
m
ethod_number = : enter=0, leave=0
=
 ap_method_number_of : enter=0, leave=0

ap_method_number_of : include/http_protocol.h line=569 column=17
a
p_method_number_of(method : server/request.c line=1638 column=61
m
ethod);
1653
1654    if : true=0, false=0
i
f (new_uri : server/request.c line=1639 column=61
n
ew_uri[] : enter=0, leave=0
[
0] == : true=0, false=0
=
= '/') {
1655        ap_parse_uri : enter=0, leave=0

ap_parse_uri : include/http_protocol.h line=511 column=23
a
p_parse_uri(rnew : server/request.c line=1643 column=18
r
new, new_uri : server/request.c line=1639 column=61
n
ew_uri);
1656    }
1657    else {
1658        udir : server/request.c line=1646 column=11
u
dir = : pass=0
=
 ap_make_dirstr_parent : enter=0, leave=0

ap_make_dirstr_parent : include/httpd.h line=1586 column=20
a
p_make_dirstr_parent(rnew : server/request.c line=1643 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=1640 column=68
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
1659        udir : server/request.c line=1646 column=11
u
dir = : pass=0
=
 ap_escape_uri(rnew : server/request.c line=1643 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, udir : server/request.c line=1646 column=11
u
dir);    /* re-escape it */
1660        ap_parse_uri : enter=0, leave=0

ap_parse_uri : include/http_protocol.h line=511 column=23
a
p_parse_uri(rnew : server/request.c line=1643 column=18
r
new, ap_make_full_path : enter=0, leave=0

ap_make_full_path : include/httpd.h line=1600 column=20
a
p_make_full_path(rnew : server/request.c line=1643 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, udir : server/request.c line=1646 column=11
u
dir, new_uri : server/request.c line=1639 column=61
n
ew_uri));
1661    }
1662
1663    /* We cannot return NULL without violating the API. So just turn this
1664     * subrequest into a 500 to indicate the failure. */
1665    if : true=0, false=0
i
f (ap_is_recursion_limit_exceeded : enter=0, leave=0

ap_is_recursion_limit_exceeded : include/http_core.h line=274 column=17
a
p_is_recursion_limit_exceeded(r : server/request.c line=1640 column=68
r
)) {
1666        rnew : server/request.c line=1643 column=18
r
new-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 HTTP_INTERNAL_SERVER_ERROR;
1667        return : pass=0
r
eturn rnew : server/request.c line=1643 column=18
r
new;
1668    }
1669
1670    /* lookup_uri
1671     * If the content can be served by the quick_handler, we can
1672     * safely bypass request_internal processing.
1673     *
1674     * If next_filter is NULL we are expecting to be
1675     * internal_fast_redirect'ed to the subrequest, or the subrequest will
1676     * never be invoked. We need to make sure that the quickhandler is not
1677     * invoked by any lookups. Since an internal_fast_redirect will always
1678     * occur too late for the quickhandler to handle the request.
1679     */
1680    if : true=0, false=0
i
f (next_filter : server/request.c line=1641 column=62
n
ext_filter) {
1681        res : server/request.c line=1645 column=9
r
es = : pass=0
=
 ap_run_quick_handler : enter=0, leave=0

ap_run_quick_handler : server/ line=33 column=1
a
p_run_quick_handler(rnew : server/request.c line=1643 column=18
r
new, 1);
1682    }
1683
1684    if : true=0, false=0
i
f (next_filter : server/request.c line=1641 column=62
n
ext_filter == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= NULL || : true=0, false=0
|
res : server/request.c line=1645 column=9
r
es != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= OK) {
1685        if : true=0, false=0
i
f ((res : server/request.c line=1645 column=9
r
es = : pass=0
=
 ap_process_request_internal : enter=0, leave=0

ap_process_request_internal : server/request.c line=102 column=17
a
p_process_request_internal(rnew : server/request.c line=1643 column=18
r
new))) {
1686            rnew : server/request.c line=1643 column=18
r
new-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 res : server/request.c line=1645 column=9
r
es;
1687        }
1688    }
1689
1690    return : pass=0
r
eturn rnew : server/request.c line=1643 column=18
r
new;
1691}
1692
1693AP_DECLARE(request_rec *) ap_sub_req_lookup_uri : call=0
a
p_sub_req_lookup_uri(const char *new_uri,
1694                                                const request_rec *r,
1695                                                ap_filter_t *next_filter)
1696{
1697    return : pass=0
r
eturn ap_sub_req_method_uri : enter=0, leave=0

ap_sub_req_method_uri : server/request.c line=1638 column=27
a
p_sub_req_method_uri("GET", new_uri : server/request.c line=1693 column=61
n
ew_uri, r : server/request.c line=1694 column=68
r
next_filter : server/request.c line=1695 column=62
n
ext_filter);
1698}
1699
1700AP_DECLARE(request_rec *) ap_sub_req_lookup_dirent : call=0
a
p_sub_req_lookup_dirent(const apr_finfo_t *dirent,
1701                                                   const request_rec *r,
1702                                                   int subtype,
1703                                                   ap_filter_t *next_filter)
1704{
1705    request_rec *rnew;
1706    int res;
1707    char *fdir;
1708    char *udir;
1709
1710    rnew : server/request.c line=1705 column=18
r
new = : pass=0
=
 make_sub_request : enter=0, leave=0

make_sub_request : server/request.c line=1522 column=21
m
ake_sub_request(r : server/request.c line=1701 column=71
r
next_filter : server/request.c line=1703 column=65
n
ext_filter);
1711
1712    /* Special case: we are looking at a relative lookup in the same directory.
1713     * This is 100% safe, since dirent->name just came from the filesystem.
1714     */
1715    if : true=0, false=0
i
f (r : server/request.c line=1701 column=71
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>path_info : include/httpd.h line=953 column=11
p
ath_info && : true=0, false=0
&
MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info) {
1716        /* strip path_info off the end of the uri to keep it in sync
1717         * with r->filename, which has already been stripped by directory_walk,
1718         * merge the dirent->name, and then, if the caller wants us to remerge
1719         * the original path info, do so.  Note we never fix the path_info back
1720         * to r->filename, since dir_walk would do so (but we don't expect it
1721         * to happen in the usual cases)
1722         */
1723        udir : server/request.c line=1708 column=11
u
dir = : pass=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
1724        udir : server/request.c line=1708 column=11
u
dir[ap_find_path_info : enter=0, leave=0

ap_find_path_info : include/util_script.h line=62 column=17
a
p_find_path_info(udir : server/request.c line=1708 column=11
u
dir, r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info)] = : enter=0, leave=0
=
 '\0';
1725        udir : server/request.c line=1708 column=11
u
dir = : pass=0
=
 ap_make_dirstr_parent : enter=0, leave=0

ap_make_dirstr_parent : include/httpd.h line=1586 column=20
a
p_make_dirstr_parent(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, udir : server/request.c line=1708 column=11
u
dir);
1726
1727        rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri = : enter=0, leave=0
=
 ap_make_full_path : enter=0, leave=0

ap_make_full_path : include/httpd.h line=1600 column=20
a
p_make_full_path(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, udir : server/request.c line=1708 column=11
u
dir, dirent : server/request.c line=1700 column=71
d
irent-> : enter=0, leave=0
-
>name : /usr/include/apr-1/apr_file_info.h line=210 column=17 name);
1728        if : true=0, false=0
i
f (subtype : server/request.c line=1702 column=56
s
ubtype == : true=0, false=0
=
= AP_SUBREQ_MERGE_ARGS) {
1729            rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri = : enter=0, leave=0
=
 ap_make_full_path : enter=0, leave=0

ap_make_full_path : include/httpd.h line=1600 column=20
a
p_make_full_path(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri, r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info + : pass=0
+
 1);
1730            rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info = : enter=0, leave=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info);
1731        }
1732        rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri = : enter=0, leave=0
=
 ap_escape_uri(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
1733    }
1734    else {
1735        udir : server/request.c line=1708 column=11
u
dir = : pass=0
=
 ap_make_dirstr_parent : enter=0, leave=0

ap_make_dirstr_parent : include/httpd.h line=1586 column=20
a
p_make_dirstr_parent(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
1736        rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri = : enter=0, leave=0
=
 ap_escape_uri(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, ap_make_full_path : enter=0, leave=0

ap_make_full_path : include/httpd.h line=1600 column=20
a
p_make_full_path(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
1737                                                                udir : server/request.c line=1708 column=11
u
dir,
1738                                                                dirent : server/request.c line=1700 column=71
d
irent-> : enter=0, leave=0
-
>name : /usr/include/apr-1/apr_file_info.h line=210 column=17 name));
1739    }
1740
1741    fdir : server/request.c line=1707 column=11
f
dir = : pass=0
=
 ap_make_dirstr_parent : enter=0, leave=0

ap_make_dirstr_parent : include/httpd.h line=1586 column=20
a
p_make_dirstr_parent(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
1742    rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename = : enter=0, leave=0
=
 ap_make_full_path : enter=0, leave=0

ap_make_full_path : include/httpd.h line=1600 column=20
a
p_make_full_path(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, fdir : server/request.c line=1707 column=11
f
dir, dirent : server/request.c line=1700 column=71
d
irent-> : enter=0, leave=0
-
>name : /usr/include/apr-1/apr_file_info.h line=210 column=17 name);
1743    if : true=0, false=0
i
f (r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>canonical_filename : include/httpd.h line=951 column=11
c
anonical_filename == : true=0, false=0
=
r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename) {
1744        rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>canonical_filename : include/httpd.h line=951 column=11
c
anonical_filename = : enter=0, leave=0
=
 rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename;
1745    }
1746
1747    /* XXX This is now less relevant; we will do a full location walk
1748     * these days for this case.  Preserve the apr_stat results, and
1749     * perhaps we also tag that symlinks were tested and/or found for
1750     * r->filename.
1751     */
1752    rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config = : enter=0, leave=0
=
 r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver-> : enter=0, leave=0
-
>lookup_defaults : include/httpd.h line=1209 column=30
l
ookup_defaults;
1753
1754    if : true=0, false=0
i
f ((dirent : server/request.c line=1700 column=71
d
irent-> : enter=0, leave=0
-
>valid : /usr/include/apr-1/apr_file_info.h line=179 column=17 valid & : pass=0
&
 APR_FINFO_MIN) != : true=0, false=0
!
= APR_FINFO_MIN) {
1755        /*
1756         * apr_dir_read isn't very complete on this platform, so
1757         * we need another apr_stat (with or without APR_FINFO_LINK
1758         * depending on whether we allow all symlinks here.)  If this
1759         * is an APR_LNK that resolves to an APR_DIR, then we will rerun
1760         * everything anyways... this should be safe.
1761         */
1762        apr_status_t rv;
1763        if : true=0, false=0
i
f (ap_allow_options : enter=0, leave=0

ap_allow_options : include/http_core.h line=152 column=17
a
p_allow_options(rnew : server/request.c line=1705 column=18
r
new) & : pass=0
&
 OPT_SYM_LINKS) {
1764            if : true=0, false=0
i
f (((rv : server/request.c line=1762 column=22
r
= : pass=0
=
 apr_stat : enter=0, leave=0

apr_stat : /usr/include/apr-1/apr_file_info.h line=229 column=27
a
pr_stat(&rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info, rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename,
1765                                APR_FINFO_MIN, rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool)) != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_SUCCESS)
1766                && : true=0, false=0
&
& (rv : server/request.c line=1762 column=22
r
!= : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_INCOMPLETE)) {
1767                rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype = : pass=0
=
 0;
1768            }
1769        }
1770        else {
1771            if : true=0, false=0
i
f (((rv : server/request.c line=1762 column=22
r
= : pass=0
=
 apr_stat : enter=0, leave=0

apr_stat : /usr/include/apr-1/apr_file_info.h line=229 column=27
a
pr_stat(&rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info, rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename,
1772                                APR_FINFO_LINK | : pass=0
|
 APR_FINFO_MIN,
1773                                rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool)) != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_SUCCESS)
1774                && : true=0, false=0
&
& (rv : server/request.c line=1762 column=22
r
!= : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_INCOMPLETE)) {
1775                rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype = : pass=0
=
 0;
1776            }
1777        }
1778    }
1779    else {
1780        memcpy : enter=0, leave=0

memcpy : /usr/include/string.h line=44 column=14
m
emcpy(&rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info, dirent : server/request.c line=1700 column=71
d
irent, sizeof(apr_finfo_t));
1781    }
1782
1783    if : true=0, false=0
i
f (rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
=
APR_LNK : /usr/include/apr-1/apr_file_info.h line=69 column=5 APR_LNK) {
1784        /*
1785         * Resolve this symlink.  We should tie this back to dir_walk's cache
1786         */
1787        if : true=0, false=0
i
f ((res : server/request.c line=1706 column=9
r
es = : pass=0
=
 resolve_symlink : enter=0, leave=0

resolve_symlink : server/request.c line=341 column=12
r
esolve_symlink(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, &rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info,
1788                                   ap_allow_options : enter=0, leave=0

ap_allow_options : include/http_core.h line=152 column=17
a
p_allow_options(rnew : server/request.c line=1705 column=18
r
new), rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool))
1789            != : true=0, false=0
!
= OK) {
1790            rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 res : server/request.c line=1706 column=9
r
es;
1791            return : pass=0
r
eturn rnew : server/request.c line=1705 column=18
r
new;
1792        }
1793    }
1794
1795    if : true=0, false=0
i
f (rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype == : true=0, false=0
=
APR_DIR : /usr/include/apr-1/apr_file_info.h line=65 column=5 APR_DIR) {
1796        /* ap_make_full_path overallocated the buffers
1797         * by one character to help us out here.
1798         */
1799        strcat : enter=0, leave=0

strcat : /usr/include/string.h line=136 column=14
s
trcat(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, "/");
1800        if : true=0, false=0
i
f (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
* dereference : enter=0, leave=0
*
rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info) {
1801            strcat : enter=0, leave=0

strcat : /usr/include/string.h line=136 column=14
s
trcat(rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri, "/");
1802        }
1803    }
1804
1805    /* fill in parsed_uri values
1806     */
1807    if : true=0, false=0
i
f (r : server/request.c line=1701 column=71
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>args : include/httpd.h line=955 column=11
a
rgs && : true=0, false=0
&
MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>args : include/httpd.h line=955 column=11
a
rgs && : true=0, false=0
&
& (subtype : server/request.c line=1702 column=56
s
ubtype == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= AP_SUBREQ_MERGE_ARGS)) {
1808        ap_parse_uri : enter=0, leave=0

ap_parse_uri : include/http_protocol.h line=511 column=23
a
p_parse_uri(rnew : server/request.c line=1705 column=18
r
new, apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri, "?",
1809                                       r : server/request.c line=1701 column=71
r
-> : enter=0, leave=0
-
>args : include/httpd.h line=955 column=11
a
rgs, NULL));
1810    }
1811    else {
1812        ap_parse_uri : enter=0, leave=0

ap_parse_uri : include/http_protocol.h line=511 column=23
a
p_parse_uri(rnew : server/request.c line=1705 column=18
r
new, rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
1813    }
1814
1815    /* We cannot return NULL without violating the API. So just turn this
1816     * subrequest into a 500. */
1817    if : true=0, false=0
i
f (ap_is_recursion_limit_exceeded : enter=0, leave=0

ap_is_recursion_limit_exceeded : include/http_core.h line=274 column=17
a
p_is_recursion_limit_exceeded(r : server/request.c line=1701 column=71
r
)) {
1818        rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 HTTP_INTERNAL_SERVER_ERROR;
1819        return : pass=0
r
eturn rnew : server/request.c line=1705 column=18
r
new;
1820    }
1821
1822    if : true=0, false=0
i
f ((res : server/request.c line=1706 column=9
r
es = : pass=0
=
 ap_process_request_internal : enter=0, leave=0

ap_process_request_internal : server/request.c line=102 column=17
a
p_process_request_internal(rnew : server/request.c line=1705 column=18
r
new))) {
1823        rnew : server/request.c line=1705 column=18
r
new-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 res : server/request.c line=1706 column=9
r
es;
1824    }
1825
1826    return : pass=0
r
eturn rnew : server/request.c line=1705 column=18
r
new;
1827}
1828
1829AP_DECLARE(request_rec *) ap_sub_req_lookup_file : call=0
a
p_sub_req_lookup_file(const char *new_file,
1830                                                 const request_rec *r,
1831                                                 ap_filter_t *next_filter)
1832{
1833    request_rec *rnew;
1834    int res;
1835    char *fdir;
1836    apr_size_t fdirlen;
1837
1838    rnew : server/request.c line=1833 column=18
r
new = : pass=0
=
 make_sub_request : enter=0, leave=0

make_sub_request : server/request.c line=1522 column=21
m
ake_sub_request(r : server/request.c line=1830 column=69
r
next_filter : server/request.c line=1831 column=63
n
ext_filter);
1839
1840    fdir : server/request.c line=1835 column=11
f
dir = : pass=0
=
 ap_make_dirstr_parent : enter=0, leave=0

ap_make_dirstr_parent : include/httpd.h line=1586 column=20
a
p_make_dirstr_parent(rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=1830 column=69
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);
1841    fdirlen : server/request.c line=1836 column=16
f
dirlen = : pass=0
=
 strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(fdir : server/request.c line=1835 column=11
f
dir);
1842
1843    /* Translate r->filename, if it was canonical, it stays canonical
1844     */
1845    if : true=0, false=0
i
f (r : server/request.c line=1830 column=69
r
-> : enter=0, leave=0
-
>canonical_filename : include/httpd.h line=951 column=11
c
anonical_filename == : true=0, false=0
=
r : server/request.c line=1830 column=69
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename) {
1846        rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>canonical_filename : include/httpd.h line=951 column=11
c
anonical_filename = : enter=0, leave=0
=
 (char*)(1);
1847    }
1848
1849    if : true=0, false=0
i
f (apr_filepath_merge : enter=0, leave=0

apr_filepath_merge : /usr/include/apr-1/apr_file_info.h line=354 column=27
a
pr_filepath_merge(&rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, fdir : server/request.c line=1835 column=11
f
dir, new_file : server/request.c line=1829 column=62
n
ew_file,
1850                           APR_FILEPATH_TRUENAME, rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool) != : true=0, false=0
!
= APR_SUCCESS) {
1851        rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 HTTP_FORBIDDEN;
1852        return : pass=0
r
eturn rnew : server/request.c line=1833 column=18
r
new;
1853    }
1854
1855    if : true=0, false=0
i
f (rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>canonical_filename : include/httpd.h line=951 column=11
c
anonical_filename) {
1856        rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>canonical_filename : include/httpd.h line=951 column=11
c
anonical_filename = : enter=0, leave=0
=
 rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename;
1857    }
1858
1859    /*
1860     * Check for a special case... if there are no '/' characters in new_file
1861     * at all, and the path was the same, then we are looking at a relative
1862     * lookup in the same directory.  Fixup the URI to match.
1863     */
1864
1865    if : true=0, false=0
i
f (strncmp : enter=0, leave=0

strncmp : /usr/include/string.h line=146 column=12
s
trncmp(rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, fdir : server/request.c line=1835 column=11
f
dir, fdirlen : server/request.c line=1836 column=16
f
dirlen) == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 0
1866        && : true=0, false=0
&
rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilenameMC/DC independently affect : true=0, false=0
[] : enter=0, leave=0
[TF
fdirlen : server/request.c line=1836 column=16
f
dirlen]
1867        && : true=0, false=0
&
& ap_strchr_c(rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename + : pass=0
+
 fdirlen : server/request.c line=1836 column=16
f
dirlen, '/') == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= NULL) {
1868        apr_status_t rv;
1869        if : true=0, false=0
i
f (ap_allow_options : enter=0, leave=0

ap_allow_options : include/http_core.h line=152 column=17
a
p_allow_options(rnew : server/request.c line=1833 column=18
r
new) & : pass=0
&
 OPT_SYM_LINKS) {
1870            if : true=0, false=0
i
f (((rv : server/request.c line=1868 column=22
r
= : pass=0
=
 apr_stat : enter=0, leave=0

apr_stat : /usr/include/apr-1/apr_file_info.h line=229 column=27
a
pr_stat(&rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info, rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename,
1871                                APR_FINFO_MIN, rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool)) != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_SUCCESS)
1872                && : true=0, false=0
&
& (rv : server/request.c line=1868 column=22
r
!= : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_INCOMPLETE)) {
1873                rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype = : pass=0
=
 0;
1874            }
1875        }
1876        else {
1877            if : true=0, false=0
i
f (((rv : server/request.c line=1868 column=22
r
= : pass=0
=
 apr_stat : enter=0, leave=0

apr_stat : /usr/include/apr-1/apr_file_info.h line=229 column=27
a
pr_stat(&rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info, rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename,
1878                                APR_FINFO_LINK | : pass=0
|
 APR_FINFO_MIN,
1879                                rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool)) != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_SUCCESS)
1880                && : true=0, false=0
&
& (rv : server/request.c line=1868 column=22
r
!= : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_INCOMPLETE)) {
1881                rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
info.filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype = : pass=0
=
 0;
1882            }
1883        }
1884
1885        if : true=0, false=0
i
f (r : server/request.c line=1830 column=69
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>uri : include/httpd.h line=946 column=11
u
ri && : true=0, false=0
&
MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
r : server/request.c line=1830 column=69
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri) {
1886            char *udir = ap_make_dirstr_parent : enter=0, leave=0

ap_make_dirstr_parent : include/httpd.h line=1586 column=20
a
p_make_dirstr_parent(rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/request.c line=1830 column=69
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
1887            rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri = : enter=0, leave=0
=
 ap_make_full_path : enter=0, leave=0

ap_make_full_path : include/httpd.h line=1600 column=20
a
p_make_full_path(rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, udir : server/request.c line=1886 column=19
u
dir,
1888                                          rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename + : pass=0
+
 fdirlen : server/request.c line=1836 column=16
f
dirlen);
1889            ap_parse_uri : enter=0, leave=0

ap_parse_uri : include/http_protocol.h line=511 column=23
a
p_parse_uri(rnew : server/request.c line=1833 column=18
r
new, rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);    /* fill in parsed_uri values */
1890        }
1891        else {
1892            ap_parse_uri : enter=0, leave=0

ap_parse_uri : include/http_protocol.h line=511 column=23
a
p_parse_uri(rnew : server/request.c line=1833 column=18
r
new, new_file : server/request.c line=1829 column=62
n
ew_file);        /* fill in parsed_uri values */
1893            rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri = : enter=0, leave=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, "");
1894        }
1895    }
1896    else {
1897        /* XXX: @@@: What should be done with the parsed_uri values?
1898         * We would be better off stripping down to the 'common' elements
1899         * of the path, then reassembling the URI as best as we can.
1900         */
1901        ap_parse_uri : enter=0, leave=0

ap_parse_uri : include/http_protocol.h line=511 column=23
a
p_parse_uri(rnew : server/request.c line=1833 column=18
r
new, new_file : server/request.c line=1829 column=62
n
ew_file);        /* fill in parsed_uri values */
1902        /*
1903         * XXX: this should be set properly like it is in the same-dir case
1904         * but it's actually sometimes to impossible to do it... because the
1905         * file may not have a uri associated with it -djg
1906         */
1907        rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri = : enter=0, leave=0
=
 apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, "");
1908    }
1909
1910    /* We cannot return NULL without violating the API. So just turn this
1911     * subrequest into a 500. */
1912    if : true=0, false=0
i
f (ap_is_recursion_limit_exceeded : enter=0, leave=0

ap_is_recursion_limit_exceeded : include/http_core.h line=274 column=17
a
p_is_recursion_limit_exceeded(r : server/request.c line=1830 column=69
r
)) {
1913        rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 HTTP_INTERNAL_SERVER_ERROR;
1914        return : pass=0
r
eturn rnew : server/request.c line=1833 column=18
r
new;
1915    }
1916
1917    if : true=0, false=0
i
f ((res : server/request.c line=1834 column=9
r
es = : pass=0
=
 ap_process_request_internal : enter=0, leave=0

ap_process_request_internal : server/request.c line=102 column=17
a
p_process_request_internal(rnew : server/request.c line=1833 column=18
r
new))) {
1918        rnew : server/request.c line=1833 column=18
r
new-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 res : server/request.c line=1834 column=9
r
es;
1919    }
1920
1921    return : pass=0
r
eturn rnew : server/request.c line=1833 column=18
r
new;
1922}
1923
1924AP_DECLARE(int) ap_run_sub_req : call=0
a
p_run_sub_req(request_rec *r)
1925{
1926    int retval = DECLINED;
1927    /* Run the quick handler if the subrequest is not a dirent or file
1928     * subrequest
1929     */
1930    if : true=0, false=0
i
f (! : true=0, false=0
!
(r : server/request.c line=1924 column=45
r
MC/DC independently affect : true=0, false=0
-> : enter=0, leave=0
-TF
>filename : include/httpd.h line=948 column=11
f
ilename && : true=0, false=0
&
r : server/request.c line=1924 column=45
r
-> : enter=0, leave=0
-
>finfo : include/httpd.h line=957 column=17
f
infoMC/DC independently affect : true=0, false=0
.TF
filetype : /usr/include/apr-1/apr_file_info.h line=186 column=20 filetype)) {
1931        retval : server/request.c line=1926 column=9
r
etval = : pass=0
=
 ap_run_quick_handler : enter=0, leave=0

ap_run_quick_handler : server/ line=33 column=1
a
p_run_quick_handler(r : server/request.c line=1924 column=45
r
, 0);
1932    }
1933    if : true=0, false=0
i
f (retval : server/request.c line=1926 column=9
r
etval != : true=0, false=0
!
= OK) {
1934        retval : server/request.c line=1926 column=9
r
etval = : pass=0
=
 ap_invoke_handler : enter=0, leave=0

ap_invoke_handler : include/http_config.h line=928 column=22
a
p_invoke_handler(r : server/request.c line=1924 column=45
r
);
1935        if : true=0, false=0
i
f (retval : server/request.c line=1926 column=9
r
etval == : true=0, false=0
=
= DONE) {
1936            retval : server/request.c line=1926 column=9
r
etval = : pass=0
=
 OK;
1937        }
1938    }
1939    ap_finalize_sub_req_protocol : enter=0, leave=0

ap_finalize_sub_req_protocol : include/http_protocol.h line=690 column=18
a
p_finalize_sub_req_protocol(r : server/request.c line=1924 column=45
r
);
1940    return : pass=0
r
eturn retval : server/request.c line=1926 column=9
r
etval;
1941}
1942
1943AP_DECLARE(void) ap_destroy_sub_req : call=0
a
p_destroy_sub_req(request_rec *r)
1944{
1945    /* Reclaim the space */
1946    apr_pool_destroy : enter=0, leave=0

apr_pool_destroy : /usr/include/apr-1/apr_pools.h line=385 column=19
a
pr_pool_destroy(r : server/request.c line=1943 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool);
1947}
1948
1949/*
1950 * Function to set the r->mtime field to the specified value if it's later
1951 * than what's already there.
1952 */
1953AP_DECLARE(void) ap_update_mtime : call=0
a
p_update_mtime(request_rec *r, apr_time_t dependency_mtime)
1954{
1955    if : true=0, false=0
i
f (r : server/request.c line=1953 column=47
r
-> : enter=0, leave=0
-
>mtime : include/httpd.h line=864 column=16
m
time < : true=0, false=0
<
 dependency_mtime : server/request.c line=1953 column=61
d
ependency_mtime) {
1956        r : server/request.c line=1953 column=47
r
-> : enter=0, leave=0
-
>mtime : include/httpd.h line=864 column=16
m
time = : enter=0, leave=0
=
 dependency_mtime : server/request.c line=1953 column=61
d
ependency_mtime;
1957    }
1958}
1959
1960/*
1961 * Is it the initial main request, which we only get *once* per HTTP request?
1962 */
1963AP_DECLARE(int) ap_is_initial_req : call=0
a
p_is_initial_req(request_rec *r)
1964{
1965    return : pass=0
r
eturn (r : server/request.c line=1963 column=48
r
-> : enter=0, leave=0
-
>main : include/httpd.h line=793 column=18
m
ain == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= NULL)       /* otherwise, this is a sub-request */
1966           && : true=0, false=0
&
& (r : server/request.c line=1963 column=48
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= NULL);   /* otherwise, this is an internal redirect */
1967}
1968[EOF]


Generated by expcov