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

 Index  Statistics  Last 
Directory./server
Filenameutil_script.c
ModifiedWed Aug 22 02:42:49 2012

Pass Half Fail Excluded Total
Function
0
0.00%
14
100.00%
0
0.00%
14
100%
Expressions
0
0.00%
433
100.00%
0
0.00%
433
100%
Conditions
0
0.00%
0
0.00%
94
100.00%
0
0.00%
94
100%
MC/DC
0
0.00%
38
100.00%
0
0.00%
38
100%
Branches

if
0
0.00%
0
0.00%
58
100.00%
0
0.00%
58
100%
for
0
0.00%
0
0.00%
2
100.00%
0
0.00%
2
100%
while
0
0.00%
0
0.00%
15
100.00%
0
0.00%
15
100%
case
0
0.00%
0
0.00%
0
0.00%
0
0.00%
0
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#include "apr.h"
18#include "apr_lib.h"
19#include "apr_strings.h"
20
21#define APR_WANT_STRFUNC
22#include "apr_want.h"
23
24#if APR_HAVE_STDLIB_H
25#include <stdlib.h>
26#endif
27
28#define CORE_PRIVATE
29#include "ap_config.h"
30#include "httpd.h"
31#include "http_config.h"
32#include "http_main.h"
33#include "http_log.h"
34#include "http_core.h"
35#include "http_protocol.h"
36#include "http_request.h"       /* for sub_req_lookup_uri() */
37#include "util_script.h"
38#include "apr_date.h"           /* For apr_date_parse_http() */
39#include "util_ebcdic.h"
40
41#ifdef OS2
42#define INCL_DOS
43#include <os2.h>
44#endif
45
46/*
47 * Various utility functions which are common to a whole lot of
48 * script-type extensions mechanisms, and might as well be gathered
49 * in one place (if only to avoid creating inter-module dependancies
50 * where there don't have to be).
51 */
52
53#define MALFORMED_MESSAGE "malformed header from script. Bad header="
54#define MALFORMED_HEADER_LENGTH_TO_SHOW 30
55
56static char *http2env : call=0
h
ttp2env(apr_pool_t *a, const char *w)
57{
58    char *res = (char *)apr_palloc : enter=0, leave=0

apr_palloc : /usr/include/apr-1/apr_pools.h line=419 column=21
a
pr_palloc(a : server/util_script.c line=56 column=35
a
, sizeof("HTTP_") + : pass=0
+
 strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(w : server/util_script.c line=56 column=50
w
));
59    char *cp = res : server/util_script.c line=58 column=11
r
es;
60    char c;
61
62    *cp : server/util_script.c line=59 column=11
c
p++ : pass=0
+
= : enter=0, leave=0
=
 'H';
63    *cp : server/util_script.c line=59 column=11
c
p++ : pass=0
+
= : enter=0, leave=0
=
 'T';
64    *cp : server/util_script.c line=59 column=11
c
p++ : pass=0
+
= : enter=0, leave=0
=
 'T';
65    *cp : server/util_script.c line=59 column=11
c
p++ : pass=0
+
= : enter=0, leave=0
=
 'P';
66    *cp : server/util_script.c line=59 column=11
c
p++ : pass=0
+
= : enter=0, leave=0
=
 '_';
67
68    while : true=0, false=0
w
hile ((c : server/util_script.c line=60 column=10
c
 = : pass=0
=
 * dereference : enter=0, leave=0
*
w : server/util_script.c line=56 column=50
w
++ : pass=0
+
+) != : true=0, false=0
!
= 0) {
69        if : true=0, false=0
i
f (! : true=0, false=0
!
apr_isalnum(c : server/util_script.c line=60 column=10
c
)) {
70            *cp : server/util_script.c line=59 column=11
c
p++ : pass=0
+
= : enter=0, leave=0
=
 '_';
71        }
72        else {
73            *cp : server/util_script.c line=59 column=11
c
p++ : pass=0
+
= : enter=0, leave=0
=
 apr_toupper(c : server/util_script.c line=60 column=10
c
);
74        }
75    }
76    *cp : server/util_script.c line=59 column=11
c
= : enter=0, leave=0
=
 0;
77
78    return : pass=0
r
eturn res : server/util_script.c line=58 column=11
r
es;
79}
80
81AP_DECLARE(char **) ap_create_environment : call=0
a
p_create_environment(apr_pool_t *p, apr_table_t *t)
82{
83    const apr_array_header_t *env_arr = apr_table_elts : enter=0, leave=0

apr_table_elts : /usr/include/apr-1/apr_tables.h line=88 column=41
a
pr_table_elts(t : server/util_script.c line=81 column=71
t
);
84    const apr_table_entry_t *elts = (const apr_table_entry_t *) env_arr : server/util_script.c line=83 column=31
e
nv_arr-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
85    char **env = (char **) apr_palloc : enter=0, leave=0

apr_palloc : /usr/include/apr-1/apr_pools.h line=419 column=21
a
pr_palloc(p : server/util_script.c line=81 column=55
p
, (env_arr : server/util_script.c line=83 column=31
e
nv_arr-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts + : pass=0
+
 2) * : pass=0
*
 sizeof(char *));
86    int i, j;
87    char *tz;
88    char *whack;
89
90    j : server/util_script.c line=86 column=12
j
 = : pass=0
=
 0;
91    if : true=0, false=0
i
f (! : true=0, false=0
!
apr_table_get : enter=0, leave=0

apr_table_get : /usr/include/apr-1/apr_tables.h line=258 column=27
a
pr_table_get(t : server/util_script.c line=81 column=71
t
, "TZ")) {
92        tz : server/util_script.c line=87 column=11
t
= : pass=0
=
 getenv : enter=0, leave=0

getenv : /usr/include/stdlib.h line=567 column=14
g
etenv("TZ");
93        if : true=0, false=0
i
f (tz : server/util_script.c line=87 column=11
t
!= : true=0, false=0
!
= NULL) {
94            env : server/util_script.c line=85 column=12
e
nv[j : server/util_script.c line=86 column=12
j
++ : pass=0
+
+] = : enter=0, leave=0
=
 apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : server/util_script.c line=81 column=55
p
, "TZ=", tz : server/util_script.c line=87 column=11
t
z, NULL);
95        }
96    }
97    for : true=0, false=0
f
or (i : server/util_script.c line=86 column=9
i
 = : pass=0
=
 0; i : server/util_script.c line=86 column=9
i
 < : true=0, false=0
<
 env_arr : server/util_script.c line=83 column=31
e
nv_arr-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts; ++ : pass=0
+
+i : server/util_script.c line=86 column=9
i
) {
98        if : true=0, false=0
i
f (! : true=0, false=0
!
elts : server/util_script.c line=84 column=30
e
lts[] : enter=0, leave=0
[
i : server/util_script.c line=86 column=9
i
].key : /usr/include/apr-1/apr_tables.h line=73 column=11 key) {
99            continue : pass=0
c
ontinue;
100        }
101        env : server/util_script.c line=85 column=12
e
nv[j : server/util_script.c line=86 column=12
j
= : enter=0, leave=0
=
 apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(p : server/util_script.c line=81 column=55
p
elts : server/util_script.c line=84 column=30
e
lts[] : enter=0, leave=0
[
i : server/util_script.c line=86 column=9
i
].key : /usr/include/apr-1/apr_tables.h line=73 column=11 key, "=", elts : server/util_script.c line=84 column=30
e
lts[] : enter=0, leave=0
[
i : server/util_script.c line=86 column=9
i
].val : /usr/include/apr-1/apr_tables.h line=77 column=11 val, NULL);
102        whack : server/util_script.c line=88 column=11
w
hack = : pass=0
=
 env : server/util_script.c line=85 column=12
e
nv[] : enter=0, leave=0
[
j : server/util_script.c line=86 column=12
j
];
103        if : true=0, false=0
i
f (apr_isdigit(* dereference : enter=0, leave=0
*
whack : server/util_script.c line=88 column=11
w
hack)) {
104            *whack : server/util_script.c line=88 column=11
w
hack++ : pass=0
+
= : enter=0, leave=0
=
 '_';
105        }
106        while : true=0, false=0
w
hile (* dereference : enter=0, leave=0
*
whack : server/util_script.c line=88 column=11
w
hack != : true=0, false=0
!
= '=') {
107            if : true=0, false=0
i
f (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
apr_isalnum(* dereference : enter=0, leave=0
*
whack : server/util_script.c line=88 column=11
w
hack) && : true=0, false=0
&
* dereference : enter=0, leave=0
*
whack : server/util_script.c line=88 column=11
w
hack != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= '_') {
108                *whack : server/util_script.c line=88 column=11
w
hack = : enter=0, leave=0
=
 '_';
109            }
110            ++ : pass=0
+
+whack : server/util_script.c line=88 column=11
w
hack;
111        }
112        ++ : pass=0
+
+j : server/util_script.c line=86 column=12
j
;
113    }
114
115    env : server/util_script.c line=85 column=12
e
nv[j : server/util_script.c line=86 column=12
j
= : enter=0, leave=0
=
 NULL;
116    return : pass=0
r
eturn env : server/util_script.c line=85 column=12
e
nv;
117}
118
119AP_DECLARE(void) ap_add_common_vars : call=0
a
p_add_common_vars(request_rec *r)
120{
121    apr_table_t *e;
122    server_rec *s = r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>server : include/httpd.h line=784 column=17
s
erver;
123    conn_rec *c = r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection;
124    const char *rem_logname;
125    char *env_path;
126#if defined(WIN32) || defined(OS2) || defined(BEOS)
127    char *env_temp;
128#endif
129    const char *host;
130    const apr_array_header_t *hdrs_arr = apr_table_elts : enter=0, leave=0

apr_table_elts : /usr/include/apr-1/apr_tables.h line=88 column=41
a
pr_table_elts(r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>headers_in : include/httpd.h line=901 column=18
h
eaders_in);
131    const apr_table_entry_t *hdrs = (const apr_table_entry_t *) hdrs_arr : server/util_script.c line=130 column=31
h
drs_arr-> : enter=0, leave=0
-
>elts : /usr/include/apr-1/apr_tables.h line=62 column=11 elts;
132    int i;
133    apr_port_t rport;
134
135    /* use a temporary apr_table_t which we'll overlap onto
136     * r->subprocess_env later
137     * (exception: if r->subprocess_env is empty at the start,
138     * write directly into it)
139     */
140    if : true=0, false=0
i
f (apr_is_empty_table : enter=0, leave=0

apr_is_empty_table : /usr/include/apr-1/apr_tables.h line=95 column=18
a
pr_is_empty_table(r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>subprocess_env : include/httpd.h line=908 column=18
s
ubprocess_env)) {
141        e : server/util_script.c line=121 column=18
e
 = : pass=0
=
 r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>subprocess_env : include/httpd.h line=908 column=18
s
ubprocess_env;
142    }
143    else {
144        e : server/util_script.c line=121 column=18
e
 = : pass=0
=
 apr_table_make : enter=0, leave=0

apr_table_make : /usr/include/apr-1/apr_tables.h line=222 column=28
a
pr_table_make(r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, 25 + : pass=0
+
 hdrs_arr : server/util_script.c line=130 column=31
h
drs_arr-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts);
145    }
146
147    /* First, add environment vars from headers... this is as per
148     * CGI specs, though other sorts of scripting interfaces see
149     * the same vars...
150     */
151
152    for : true=0, false=0
f
or (i : server/util_script.c line=132 column=9
i
 = : pass=0
=
 0; i : server/util_script.c line=132 column=9
i
 < : true=0, false=0
<
 hdrs_arr : server/util_script.c line=130 column=31
h
drs_arr-> : enter=0, leave=0
-
>nelts : /usr/include/apr-1/apr_tables.h line=58 column=9 nelts; ++ : pass=0
+
+i : server/util_script.c line=132 column=9
i
) {
153        if : true=0, false=0
i
f (! : true=0, false=0
!
hdrs : server/util_script.c line=131 column=30
h
drs[] : enter=0, leave=0
[
i : server/util_script.c line=132 column=9
i
].key : /usr/include/apr-1/apr_tables.h line=73 column=11 key) {
154            continue : pass=0
c
ontinue;
155        }
156
157        /* A few headers are special cased --- Authorization to prevent
158         * rogue scripts from capturing passwords; content-type and -length
159         * for no particular reason.
160         */
161
162        if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(hdrs : server/util_script.c line=131 column=30
h
drs[] : enter=0, leave=0
[
i : server/util_script.c line=132 column=9
i
].key : /usr/include/apr-1/apr_tables.h line=73 column=11 key, "Content-type")) {
163            apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "CONTENT_TYPE", hdrs : server/util_script.c line=131 column=30
h
drs[] : enter=0, leave=0
[
i : server/util_script.c line=132 column=9
i
].val : /usr/include/apr-1/apr_tables.h line=77 column=11 val);
164        }
165        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(hdrs : server/util_script.c line=131 column=30
h
drs[] : enter=0, leave=0
[
i : server/util_script.c line=132 column=9
i
].key : /usr/include/apr-1/apr_tables.h line=73 column=11 key, "Content-length")) {
166            apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "CONTENT_LENGTH", hdrs : server/util_script.c line=131 column=30
h
drs[] : enter=0, leave=0
[
i : server/util_script.c line=132 column=9
i
].val : /usr/include/apr-1/apr_tables.h line=77 column=11 val);
167        }
168        /*
169         * You really don't want to disable this check, since it leaves you
170         * wide open to CGIs stealing passwords and people viewing them
171         * in the environment with "ps -e".  But, if you must...
172         */
173#ifndef SECURITY_HOLE_PASS_AUTHORIZATION
174        else if : true=0, false=0
i
f (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(hdrs : server/util_script.c line=131 column=30
h
drs[] : enter=0, leave=0
[
i : server/util_script.c line=132 column=9
i
].key : /usr/include/apr-1/apr_tables.h line=73 column=11 key, "Authorization")
175                 || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(hdrs : server/util_script.c line=131 column=30
h
drs[] : enter=0, leave=0
[
i : server/util_script.c line=132 column=9
i
].key : /usr/include/apr-1/apr_tables.h line=73 column=11 key, "Proxy-Authorization")) {
176            continue : pass=0
c
ontinue;
177        }
178#endif
179        else {
180            apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
http2env : enter=0, leave=0

http2env : server/util_script.c line=56 column=14
h
ttp2env(r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, hdrs : server/util_script.c line=131 column=30
h
drs[] : enter=0, leave=0
[
i : server/util_script.c line=132 column=9
i
].key : /usr/include/apr-1/apr_tables.h line=73 column=11 key), hdrs : server/util_script.c line=131 column=30
h
drs[] : enter=0, leave=0
[
i : server/util_script.c line=132 column=9
i
].val : /usr/include/apr-1/apr_tables.h line=77 column=11 val);
181        }
182    }
183
184    if : true=0, false=0
i
f (! : true=0, false=0
!
(env_path : server/util_script.c line=125 column=11
e
nv_path = : pass=0
=
 getenv : enter=0, leave=0

getenv : /usr/include/stdlib.h line=567 column=14
g
etenv("PATH"))) {
185        env_path : server/util_script.c line=125 column=11
e
nv_path = : pass=0
=
 DEFAULT_PATH;
186    }
187    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "PATH", apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, env_path : server/util_script.c line=125 column=11
e
nv_path));
188
189#ifdef WIN32
190    if ((env_temp = getenv("SystemRoot")) != NULL) {
191        apr_table_addn(e, "SystemRoot", env_temp);
192    }
193    if ((env_temp = getenv("COMSPEC")) != NULL) {
194        apr_table_addn(e, "COMSPEC", env_temp);
195    }
196    if ((env_temp = getenv("PATHEXT")) != NULL) {
197        apr_table_addn(e, "PATHEXT", env_temp);
198    }
199    if ((env_temp = getenv("WINDIR")) != NULL) {
200        apr_table_addn(e, "WINDIR", env_temp);
201    }
202#endif
203
204#ifdef OS2
205    if ((env_temp = getenv("COMSPEC")) != NULL) {
206        apr_table_addn(e, "COMSPEC", env_temp);
207    }
208    if ((env_temp = getenv("ETC")) != NULL) {
209        apr_table_addn(e, "ETC", env_temp);
210    }
211    if ((env_temp = getenv("DPATH")) != NULL) {
212        apr_table_addn(e, "DPATH", env_temp);
213    }
214    if ((env_temp = getenv("PERLLIB_PREFIX")) != NULL) {
215        apr_table_addn(e, "PERLLIB_PREFIX", env_temp);
216    }
217#endif
218
219#ifdef BEOS
220    if ((env_temp = getenv("LIBRARY_PATH")) != NULL) {
221        apr_table_addn(e, "LIBRARY_PATH", env_temp);
222    }
223#endif
224
225    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "SERVER_SIGNATURE", ap_psignature : enter=0, leave=0

ap_psignature : include/httpd.h line=1893 column=26
a
p_psignature("", r : server/util_script.c line=119 column=50
r
));
226    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "SERVER_SOFTWARE", ap_get_server_banner : enter=0, leave=0

ap_get_server_banner : include/httpd.h line=445 column=26
a
p_get_server_banner());
227    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "SERVER_NAME",
228                   ap_escape_html : enter=0, leave=0

ap_escape_html : include/httpd.h line=1512 column=20
a
p_escape_html(r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, ap_get_server_name : enter=0, leave=0

ap_get_server_name : include/http_core.h line=228 column=26
a
p_get_server_name(r : server/util_script.c line=119 column=50
r
)));
229    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "SERVER_ADDR", r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>connection : include/httpd.h line=782 column=15
c
onnection-> : enter=0, leave=0
-
>local_ip : include/httpd.h line=1083 column=11
l
ocal_ip);  /* Apache */
230    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "SERVER_PORT",
231                  apr_psprintf : enter=0, leave=0

apr_psprintf : /usr/include/apr-1/apr_strings.h line=170 column=28
a
pr_psprintf(r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, "%u", ap_get_server_port : enter=0, leave=0

ap_get_server_port : include/http_core.h line=244 column=24
a
p_get_server_port(r : server/util_script.c line=119 column=50
r
)));
232    host : server/util_script.c line=129 column=17
h
ost = : pass=0
=
 ap_get_remote_host : enter=0, leave=0

ap_get_remote_host : include/http_core.h line=201 column=26
a
p_get_remote_host(c : server/util_script.c line=123 column=15
c
r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>per_dir_config : include/httpd.h line=977 column=30
p
er_dir_config, REMOTE_HOST, NULL);
233    if : true=0, false=0
i
f (host : server/util_script.c line=129 column=17
h
ost) {
234        apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "REMOTE_HOST", host : server/util_script.c line=129 column=17
h
ost);
235    }
236    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "REMOTE_ADDR", c : server/util_script.c line=123 column=15
c
-> : enter=0, leave=0
-
>remote_ip : include/httpd.h line=1060 column=11
r
emote_ip);
237    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "DOCUMENT_ROOT", ap_document_root : enter=0, leave=0

ap_document_root : include/http_core.h line=175 column=26
a
p_document_root(r : server/util_script.c line=119 column=50
r
));    /* Apache */
238    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "SERVER_ADMIN", s : server/util_script.c line=122 column=17
s
-> : enter=0, leave=0
-
>server_admin : include/httpd.h line=1186 column=11
s
erver_admin); /* Apache */
239    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "SCRIPT_FILENAME", r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename);  /* Apache */
240
241    rport : server/util_script.c line=133 column=16
r
port = : pass=0
=
 c : server/util_script.c line=123 column=15
c
-> : enter=0, leave=0
-
>remote_addr : include/httpd.h line=1057 column=21
r
emote_addr-> : enter=0, leave=0
-
>port : /usr/include/apr-1/apr_network_io.h line=219 column=16 port;
242    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "REMOTE_PORT", apr_itoa : enter=0, leave=0

apr_itoa : /usr/include/apr-1/apr_strings.h line=283 column=21
a
pr_itoa(r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, rport : server/util_script.c line=133 column=16
r
port));
243
244    if : true=0, false=0
i
f (r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>user : include/httpd.h line=930 column=11
u
ser) {
245        apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "REMOTE_USER", r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>user : include/httpd.h line=930 column=11
u
ser);
246    }
247    else if : true=0, false=0
i
f (r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev) {
248        request_rec *back = r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev;
249
250        while : true=0, false=0
w
hile (back : server/util_script.c line=248 column=22
b
ack) {
251            if : true=0, false=0
i
f (back : server/util_script.c line=248 column=22
b
ack-> : enter=0, leave=0
-
>user : include/httpd.h line=930 column=11
u
ser) {
252                apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "REDIRECT_REMOTE_USER", back : server/util_script.c line=248 column=22
b
ack-> : enter=0, leave=0
-
>user : include/httpd.h line=930 column=11
u
ser);
253                break : pass=0
b
reak;
254            }
255            back : server/util_script.c line=248 column=22
b
ack = : pass=0
=
 back : server/util_script.c line=248 column=22
b
ack-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev;
256        }
257    }
258    if : true=0, false=0
i
f (r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>ap_auth_type : include/httpd.h line=932 column=11
a
p_auth_type) {
259        apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "AUTH_TYPE", r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>ap_auth_type : include/httpd.h line=932 column=11
a
p_auth_type);
260    }
261    rem_logname : server/util_script.c line=124 column=17
r
em_logname = : pass=0
=
 ap_get_remote_logname : enter=0, leave=0

ap_get_remote_logname : include/http_core.h line=209 column=26
a
p_get_remote_logname(r : server/util_script.c line=119 column=50
r
);
262    if : true=0, false=0
i
f (rem_logname : server/util_script.c line=124 column=17
r
em_logname) {
263        apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "REMOTE_IDENT", apr_pstrdup : enter=0, leave=0

apr_pstrdup : /usr/include/apr-1/apr_strings.h line=95 column=21
a
pr_pstrdup(r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, rem_logname : server/util_script.c line=124 column=17
r
em_logname));
264    }
265
266    /* Apache custom error responses. If we have redirected set two new vars */
267
268    if : true=0, false=0
i
f (r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev) {
269        if : true=0, false=0
i
f (r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev-> : enter=0, leave=0
-
>args : include/httpd.h line=955 column=11
a
rgs) {
270            apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "REDIRECT_QUERY_STRING", r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev-> : enter=0, leave=0
-
>args : include/httpd.h line=955 column=11
a
rgs);
271        }
272        if : true=0, false=0
i
f (r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri) {
273            apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(e : server/util_script.c line=121 column=18
e
, "REDIRECT_URL", r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>prev : include/httpd.h line=789 column=18
p
rev-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
274        }
275    }
276
277    if : true=0, false=0
i
f (e : server/util_script.c line=121 column=18
e
 != : true=0, false=0
!
r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>subprocess_env : include/httpd.h line=908 column=18
s
ubprocess_env) {
278      apr_table_overlap : enter=0, leave=0

apr_table_overlap : /usr/include/apr-1/apr_tables.h line=448 column=19
a
pr_table_overlap(r : server/util_script.c line=119 column=50
r
-> : enter=0, leave=0
-
>subprocess_env : include/httpd.h line=908 column=18
s
ubprocess_env, e : server/util_script.c line=121 column=18
e
, APR_OVERLAP_TABLES_SET);
279    }
280}
281
282/* This "cute" little function comes about because the path info on
283 * filenames and URLs aren't always the same. So we take the two,
284 * and find as much of the two that match as possible.
285 */
286
287AP_DECLARE(int) ap_find_path_info : call=0
a
p_find_path_info(const char *uri, const char *path_info)
288{
289    int lu = strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(uri : server/util_script.c line=287 column=47
u
ri);
290    int lp = strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(path_info : server/util_script.c line=287 column=64
p
ath_info);
291
292    while : true=0, false=0
w
hile (lu : server/util_script.c line=289 column=9
l
u-- : pass=0
-
&& : true=0, false=0
&
lp : server/util_script.c line=290 column=9
l
p-- : pass=0
-
&& : true=0, false=0
&
uri : server/util_script.c line=287 column=47
u
ri[] : enter=0, leave=0
[
lu : server/util_script.c line=289 column=9
l
u] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
path_info : server/util_script.c line=287 column=64
p
ath_info[] : enter=0, leave=0
[
lp : server/util_script.c line=290 column=9
l
p]) {
293        if : true=0, false=0
i
f (path_info : server/util_script.c line=287 column=64
p
ath_info[] : enter=0, leave=0
[
lp : server/util_script.c line=290 column=9
l
p] == : true=0, false=0
=
= '/') {
294            while : true=0, false=0
w
hile (MC/DC independently affect : true=0, false=0

lu : server/util_script.c line=289 column=9
lTF
&& : true=0, false=0
&
uri : server/util_script.c line=287 column=47
u
ri[] : enter=0, leave=0
[
lu : server/util_script.c line=289 column=9
l
u- : pass=0
-
1] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= '/') lu : server/util_script.c line=289 column=9
l
u-- : pass=0
-
-;
295        }
296    }
297
298    if : true=0, false=0
i
f (lu : server/util_script.c line=289 column=9
l
== : true=0, false=0
=
= -1) {
299        lu : server/util_script.c line=289 column=9
l
= : pass=0
=
 0;
300    }
301
302    while : true=0, false=0
w
hile (uri : server/util_script.c line=287 column=47
u
ri[] : enter=0, leave=0
[
lu : server/util_script.c line=289 column=9
l
u] != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= '\0' && : true=0, false=0
&
uri : server/util_script.c line=287 column=47
u
ri[] : enter=0, leave=0
[
lu : server/util_script.c line=289 column=9
l
u] != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= '/') {
303        lu : server/util_script.c line=289 column=9
l
u++ : pass=0
+
+;
304    }
305    return : pass=0
r
eturn lu : server/util_script.c line=289 column=9
l
u;
306}
307
308/* Obtain the Request-URI from the original request-line, returning
309 * a new string from the request pool containing the URI or "".
310 */
311static char *original_uri : call=0
o
riginal_uri(request_rec *r)
312{
313    char *first, *last;
314
315    if : true=0, false=0
i
f (r : server/util_script.c line=311 column=40
r
-> : enter=0, leave=0
-
>the_request : include/httpd.h line=799 column=11
t
he_request == : true=0, false=0
=
= NULL) {
316        return : pass=0
r
eturn (char *) apr_pcalloc(r : server/util_script.c line=311 column=40
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, 1);
317    }
318
319    first : server/util_script.c line=313 column=11
f
irst = : pass=0
=
 r : server/util_script.c line=311 column=40
r
-> : enter=0, leave=0
-
>the_request : include/httpd.h line=799 column=11
t
he_request;     /* use the request-line */
320
321    while : true=0, false=0
w
hile (MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
first : server/util_script.c line=313 column=11
f
irst && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
apr_isspace(* dereference : enter=0, leave=0
*
first : server/util_script.c line=313 column=11
f
irst)) {
322        ++ : pass=0
+
+first : server/util_script.c line=313 column=11
f
irst;                /* skip over the method */
323    }
324    while : true=0, false=0
w
hile (apr_isspace(* dereference : enter=0, leave=0
*
first : server/util_script.c line=313 column=11
f
irst)) {
325        ++ : pass=0
+
+first : server/util_script.c line=313 column=11
f
irst;                /*   and the space(s)   */
326    }
327
328    last : server/util_script.c line=313 column=19
l
ast = : pass=0
=
 first : server/util_script.c line=313 column=11
f
irst;
329    while : true=0, false=0
w
hile (MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
last : server/util_script.c line=313 column=19
l
ast && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
apr_isspace(* dereference : enter=0, leave=0
*
last : server/util_script.c line=313 column=19
l
ast)) {
330        ++ : pass=0
+
+last : server/util_script.c line=313 column=19
l
ast;                 /* end at next whitespace */
331    }
332
333    return : pass=0
r
eturn apr_pstrmemdup : enter=0, leave=0

apr_pstrmemdup : /usr/include/apr-1/apr_strings.h line=109 column=21
a
pr_pstrmemdup(r : server/util_script.c line=311 column=40
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, first : server/util_script.c line=313 column=11
f
irst, last : server/util_script.c line=313 column=19
l
ast - : pass=0
-
 first : server/util_script.c line=313 column=11
f
irst);
334}
335
336AP_DECLARE(void) ap_add_cgi_vars : call=0
a
p_add_cgi_vars(request_rec *r)
337{
338    apr_table_t *e = r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>subprocess_env : include/httpd.h line=908 column=18
s
ubprocess_env;
339
340    apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(e : server/util_script.c line=338 column=18
e
, "GATEWAY_INTERFACE", "CGI/1.1");
341    apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(e : server/util_script.c line=338 column=18
e
, "SERVER_PROTOCOL", r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>protocol : include/httpd.h line=810 column=11
p
rotocol);
342    apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(e : server/util_script.c line=338 column=18
e
, "REQUEST_METHOD", r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>method : include/httpd.h line=829 column=17
m
ethod);
343    apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(e : server/util_script.c line=338 column=18
e
, "QUERY_STRING", r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>args : include/httpd.h line=955 column=11
a
rgs conditional operator : true=0, false=0
?
 r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>args : include/httpd.h line=955 column=11
a
rgs : "");
344    apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(e : server/util_script.c line=338 column=18
e
, "REQUEST_URI", original_uri : enter=0, leave=0

original_uri : server/util_script.c line=311 column=14
o
riginal_uri(r : server/util_script.c line=336 column=47
r
));
345
346    /* Note that the code below special-cases scripts run from includes,
347     * because it "knows" that the sub_request has been hacked to have the
348     * args and path_info of the original request, and not any that may have
349     * come with the script URI in the include command.  Ugh.
350     */
351
352    if : true=0, false=0
i
f (! : true=0, false=0
!
strcmp : enter=0, leave=0

strcmp : /usr/include/string.h line=143 column=12
s
trcmp(r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>protocol : include/httpd.h line=810 column=11
p
rotocol, "INCLUDED")) {
353        apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(e : server/util_script.c line=338 column=18
e
, "SCRIPT_NAME", r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
354        if : true=0, false=0
i
f (r : server/util_script.c line=336 column=47
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/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info) {
355            apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(e : server/util_script.c line=338 column=18
e
, "PATH_INFO", r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info);
356        }
357    }
358    else if : true=0, false=0
i
f (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
r : server/util_script.c line=336 column=47
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/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info) {
359        apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(e : server/util_script.c line=338 column=18
e
, "SCRIPT_NAME", r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri);
360    }
361    else {
362        int path_info_start = ap_find_path_info : enter=0, leave=0

ap_find_path_info : server/util_script.c line=287 column=17
a
p_find_path_info(r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri, r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info);
363
364        apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(e : server/util_script.c line=338 column=18
e
, "SCRIPT_NAME",
365                      apr_pstrndup : enter=0, leave=0

apr_pstrndup : /usr/include/apr-1/apr_strings.h line=121 column=21
a
pr_pstrndup(r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>uri : include/httpd.h line=946 column=11
u
ri, path_info_start : server/util_script.c line=362 column=13
p
ath_info_start));
366
367        apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(e : server/util_script.c line=338 column=18
e
, "PATH_INFO", r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info);
368    }
369
370    if : true=0, false=0
i
f (r : server/util_script.c line=336 column=47
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
&
r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_infoMC/DC independently affect : true=0, false=0
[] : enter=0, leave=0
[TF
0]) {
371        /*
372         * To get PATH_TRANSLATED, treat PATH_INFO as a URI path.
373         * Need to re-escape it for this, since the entire URI was
374         * un-escaped before we determined where the PATH_INFO began.
375         */
376        request_rec *pa_req;
377
378        pa_req : server/util_script.c line=376 column=22
p
a_req = : pass=0
=
 ap_sub_req_lookup_uri : enter=0, leave=0

ap_sub_req_lookup_uri : include/http_request.h line=71 column=27
a
p_sub_req_lookup_uri(ap_escape_uri(r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info), r : server/util_script.c line=336 column=47
r
,
379                                       NULL);
380
381        if : true=0, false=0
i
f (pa_req : server/util_script.c line=376 column=22
p
a_req-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename) {
382            char *pt = apr_pstrcat : enter=0, leave=0

apr_pstrcat : /usr/include/apr-1/apr_strings.h line=139 column=28
a
pr_pstrcat(r : server/util_script.c line=336 column=47
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, pa_req : server/util_script.c line=376 column=22
p
a_req-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename, pa_req : server/util_script.c line=376 column=22
p
a_req-> : enter=0, leave=0
-
>path_info : include/httpd.h line=953 column=11
p
ath_info,
383                                  NULL);
384#ifdef WIN32
385            /* We need to make this a real Windows path name */
386            apr_filepath_merge(&pt, "", pt, APR_FILEPATH_NATIVE, r->pool);
387#endif
388            apr_table_setn : enter=0, leave=0

apr_table_setn : /usr/include/apr-1/apr_tables.h line=282 column=19
a
pr_table_setn(e : server/util_script.c line=338 column=18
e
, "PATH_TRANSLATED", pt : server/util_script.c line=382 column=19
p
t);
389        }
390        ap_destroy_sub_req : enter=0, leave=0

ap_destroy_sub_req : include/http_request.h line=144 column=18
a
p_destroy_sub_req(pa_req : server/util_script.c line=376 column=22
p
a_req);
391    }
392}
393
394
395static int set_cookie_doo_doo : call=0
s
et_cookie_doo_doo(void *v, const char *key, const char *val)
396{
397    apr_table_addn : enter=0, leave=0

apr_table_addn : /usr/include/apr-1/apr_tables.h line=336 column=19
a
pr_table_addn(v : server/util_script.c line=395 column=37
v
key : server/util_script.c line=395 column=52
k
ey, val : server/util_script.c line=395 column=69
v
al);
398    return : pass=0
r
eturn 1;
399}
400
401#define HTTP_UNSET (-HTTP_OK)
402
403AP_DECLARE(int) ap_scan_script_header_err_core : call=0
a
p_scan_script_header_err_core(request_rec *r, char *buffer,
404                                       int (*getsfunc) (char *, int, void *),
405                                       void *getsfunc_data)
406{
407    char x[MAX_STRING_LEN];
408    char *w, *l;
409    int p;
410    int cgi_status = HTTP_UNSET;
411    apr_table_t *merge;
412    apr_table_t *cookie_table;
413
414    if : true=0, false=0
i
f (buffer : server/util_script.c line=403 column=70
b
uffer) {
415        *buffer : server/util_script.c line=403 column=70
b
uffer = : enter=0, leave=0
=
 '\0';
416    }
417    w : server/util_script.c line=408 column=11
w
 = : pass=0
=
 buffer : server/util_script.c line=403 column=70
b
uffer conditional operator : true=0, false=0
?
 buffer : server/util_script.c line=403 column=70
b
uffer : x : server/util_script.c line=407 column=10
x
;
418
419    /* temporary place to hold headers to merge in later */
420    merge : server/util_script.c line=411 column=18
m
erge = : pass=0
=
 apr_table_make : enter=0, leave=0

apr_table_make : /usr/include/apr-1/apr_tables.h line=222 column=28
a
pr_table_make(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, 10);
421
422    /* The HTTP specification says that it is legal to merge duplicate
423     * headers into one.  Some browsers that support Cookies don't like
424     * merged headers and prefer that each Set-Cookie header is sent
425     * separately.  Lets humour those browsers by not merging.
426     * Oh what a pain it is.
427     */
428    cookie_table : server/util_script.c line=412 column=18
c
ookie_table = : pass=0
=
 apr_table_make : enter=0, leave=0

apr_table_make : /usr/include/apr-1/apr_tables.h line=222 column=28
a
pr_table_make(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, 2);
429    apr_table_do : enter=0, leave=0

apr_table_do : /usr/include/apr-1/apr_tables.h line=382 column=25
a
pr_table_do(set_cookie_doo_doo : server/util_script.c line=395 column=12
s
et_cookie_doo_doo, cookie_table : server/util_script.c line=412 column=18
c
ookie_table, r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>err_headers_out : include/httpd.h line=906 column=18
e
rr_headers_out, "Set-Cookie", NULL);
430
431    while : true=0, false=0
w
hile (1) {
432
433        int rv = getsfunc : enter=0, leave=0

getsfunc : server/util_script.c line=404 column=46
(
*getsfunc : server/util_script.c line=404 column=46
g
etsfunc) (w : server/util_script.c line=408 column=11
w
, MAX_STRING_LEN - : pass=0
-
 1, getsfunc_data : server/util_script.c line=405 column=46
g
etsfunc_data);
434        if : true=0, false=0
i
f (rv : server/util_script.c line=433 column=13
r
== : true=0, false=0
=
= 0) {
435            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| : pass=0
|
APLOG_TOCLIENT, 0, r : server/util_script.c line=403 column=61
r
,
436                          "Premature end of script headers: %s",
437                          apr_filepath_name_get : enter=0, leave=0

apr_filepath_name_get : /usr/include/apr-1/apr_lib.h line=84 column=27
a
pr_filepath_name_get(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename));
438            return : pass=0
r
eturn HTTP_INTERNAL_SERVER_ERROR;
439        }
440        else if : true=0, false=0
i
f (rv : server/util_script.c line=433 column=13
r
== : true=0, false=0
=
= -1) {
441            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| : pass=0
|
APLOG_TOCLIENT, 0, r : server/util_script.c line=403 column=61
r
,
442                          "Script timed out before returning headers: %s",
443                          apr_filepath_name_get : enter=0, leave=0

apr_filepath_name_get : /usr/include/apr-1/apr_lib.h line=84 column=27
a
pr_filepath_name_get(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename));
444            return : pass=0
r
eturn HTTP_GATEWAY_TIME_OUT;
445        }
446
447        /* Delete terminal (CR?)LF */
448
449        p : server/util_script.c line=409 column=9
p
 = : pass=0
=
 strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(w : server/util_script.c line=408 column=11
w
);
450             /* Indeed, the host's '\n':
451                '\012' for UNIX; '\015' for MacOS; '\025' for OS/390
452                 -- whatever the script generates.
453             */
454        if : true=0, false=0
i
f (p : server/util_script.c line=409 column=9
p
 > : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
 0 && : true=0, false=0
&
w : server/util_script.c line=408 column=11
w
[] : enter=0, leave=0
[
p : server/util_script.c line=409 column=9
p
 - : pass=0
-
 1] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= '\n') {
455            if : true=0, false=0
i
f (p : server/util_script.c line=409 column=9
p
 > : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
 1 && : true=0, false=0
&
w : server/util_script.c line=408 column=11
w
[] : enter=0, leave=0
[
p : server/util_script.c line=409 column=9
p
 - : pass=0
-
 2] == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= CR) {
456                w : server/util_script.c line=408 column=11
w
[p : server/util_script.c line=409 column=9
p
 - : pass=0
-
 2] = : enter=0, leave=0
=
 '\0';
457            }
458            else {
459                w : server/util_script.c line=408 column=11
w
[p : server/util_script.c line=409 column=9
p
 - : pass=0
-
 1] = : enter=0, leave=0
=
 '\0';
460            }
461        }
462
463        /*
464         * If we've finished reading the headers, check to make sure any
465         * HTTP/1.1 conditions are met.  If so, we're done; normal processing
466         * will handle the script's output.  If not, just return the error.
467         * The appropriate thing to do would be to send the script process a
468         * SIGPIPE to let it know we're ignoring it, close the channel to the
469         * script process, and *then* return the failed-to-meet-condition
470         * error.  Otherwise we'd be waiting for the script to finish
471         * blithering before telling the client the output was no good.
472         * However, we don't have the information to do that, so we have to
473         * leave it to an upper layer.
474         */
475        if : true=0, false=0
i
f (w : server/util_script.c line=408 column=11
w
[] : enter=0, leave=0
[
0] == : true=0, false=0
=
= '\0') {
476            int cond_status = OK;
477
478           /* PR#38070: This fails because it gets confused when a
479            * CGI Status header overrides ap_meets_conditions.
480            * 
481            * We can fix that by dropping ap_meets_conditions when
482            * Status has been set.  Since this is the only place
483            * cgi_status gets used, let's test it explicitly.
484            *
485            * The alternative would be to ignore CGI Status when
486            * ap_meets_conditions returns anything interesting.
487            * That would be safer wrt HTTP, but would break CGI.
488            */
489            if : true=0, false=0
i
f ((cgi_status : server/util_script.c line=410 column=9
c
gi_status == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= HTTP_UNSET) && : true=0, false=0
&
& (r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>method_number : include/httpd.h line=831 column=9
m
ethod_number == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= M_GET)) {
490                cond_status : server/util_script.c line=476 column=17
c
ond_status = : pass=0
=
 ap_meets_conditions : enter=0, leave=0

ap_meets_conditions : include/http_protocol.h line=181 column=17
a
p_meets_conditions(r : server/util_script.c line=403 column=61
r
);
491            }
492            apr_table_overlap : enter=0, leave=0

apr_table_overlap : /usr/include/apr-1/apr_tables.h line=448 column=19
a
pr_table_overlap(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>err_headers_out : include/httpd.h line=906 column=18
e
rr_headers_out, merge : server/util_script.c line=411 column=18
m
erge,
493                APR_OVERLAP_TABLES_MERGE);
494            if : true=0, false=0
i
f (! : true=0, false=0
!
apr_is_empty_table : enter=0, leave=0

apr_is_empty_table : /usr/include/apr-1/apr_tables.h line=95 column=18
a
pr_is_empty_table(cookie_table : server/util_script.c line=412 column=18
c
ookie_table)) {
495                /* the cookies have already been copied to the cookie_table */
496                apr_table_unset : enter=0, leave=0

apr_table_unset : /usr/include/apr-1/apr_tables.h line=290 column=19
a
pr_table_unset(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>err_headers_out : include/httpd.h line=906 column=18
e
rr_headers_out, "Set-Cookie");
497                r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>err_headers_out : include/httpd.h line=906 column=18
e
rr_headers_out = : enter=0, leave=0
=
 apr_table_overlay : enter=0, leave=0

apr_table_overlay : /usr/include/apr-1/apr_tables.h line=346 column=28
a
pr_table_overlay(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool,
498                    r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>err_headers_out : include/httpd.h line=906 column=18
e
rr_headers_out, cookie_table : server/util_script.c line=412 column=18
c
ookie_table);
499            }
500            return : pass=0
r
eturn cond_status : server/util_script.c line=476 column=17
c
ond_status;
501        }
502
503        /* if we see a bogus header don't ignore it. Shout and scream */
504
505#if APR_CHARSET_EBCDIC
506            /* Chances are that we received an ASCII header text instead of
507             * the expected EBCDIC header lines. Try to auto-detect:
508             */
509        if (!(l = strchr(w, ':'))) {
510            int maybeASCII = 0, maybeEBCDIC = 0;
511            unsigned char *cp, native;
512            apr_size_t inbytes_left, outbytes_left;
513
514            for (cp = w; *cp != '\0'; ++cp) {
515                native = apr_xlate_conv_byte(ap_hdrs_from_ascii, *cp);
516                if (apr_isprint(*cp) && !apr_isprint(native))
517                    ++maybeEBCDIC;
518                if (!apr_isprint(*cp) && apr_isprint(native))
519                    ++maybeASCII;
520            }
521            if (maybeASCII > maybeEBCDIC) {
522                ap_log_error(APLOG_MARK, APLOG_ERR, 0, r->server,
523                             "CGI Interface Error: Script headers apparently ASCII: (CGI = %s)",
524                             r->filename);
525                inbytes_left = outbytes_left = cp - w;
526                apr_xlate_conv_buffer(ap_hdrs_from_ascii,
527                                      w, &inbytes_left, w, &outbytes_left);
528            }
529        }
530#endif /*APR_CHARSET_EBCDIC*/
531        if : true=0, false=0
i
f (! : true=0, false=0
!
(l : server/util_script.c line=408 column=15
l
 = : pass=0
=
 strchr : enter=0, leave=0

strchr : /usr/include/string.h line=235 column=14
s
trchr(w : server/util_script.c line=408 column=11
w
, ':'))) {
532            char malformed[(sizeof MALFORMED_MESSAGE) + 1
533                           + MALFORMED_HEADER_LENGTH_TO_SHOW];
534
535            strcpy : enter=0, leave=0

strcpy : /usr/include/string.h line=128 column=14
s
trcpy(malformed : server/util_script.c line=532 column=18
m
alformed, MALFORMED_MESSAGE);
536            strncat : enter=0, leave=0

strncat : /usr/include/string.h line=139 column=14
s
trncat(malformed : server/util_script.c line=532 column=18
m
alformed, w : server/util_script.c line=408 column=11
w
, MALFORMED_HEADER_LENGTH_TO_SHOW);
537
538            if : true=0, false=0
i
f (! : true=0, false=0
!
buffer : server/util_script.c line=403 column=70
b
uffer) {
539                /* Soak up all the script output - may save an outright kill */
540                while : true=0, false=0
w
hile (getsfunc : enter=0, leave=0

getsfunc : server/util_script.c line=404 column=46
(
*getsfunc : server/util_script.c line=404 column=46
g
etsfunc)(w : server/util_script.c line=408 column=11
w
, MAX_STRING_LEN - : pass=0
-
 1, getsfunc_data : server/util_script.c line=405 column=46
g
etsfunc_data) > : true=0, false=0
>
 0) {
541                    continue : pass=0
c
ontinue;
542                }
543            }
544
545            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| : pass=0
|
APLOG_TOCLIENT, 0, r : server/util_script.c line=403 column=61
r
,
546                          "%s: %s", malformed : server/util_script.c line=532 column=18
m
alformed,
547                          apr_filepath_name_get : enter=0, leave=0

apr_filepath_name_get : /usr/include/apr-1/apr_lib.h line=84 column=27
a
pr_filepath_name_get(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>filename : include/httpd.h line=948 column=11
f
ilename));
548            return : pass=0
r
eturn HTTP_INTERNAL_SERVER_ERROR;
549        }
550
551        *l : server/util_script.c line=408 column=15
l
++ : pass=0
+
= : enter=0, leave=0
=
 '\0';
552        while : true=0, false=0
w
hile (MC/DC independently affect : true=0, false=0
* dereference : enter=0, leave=0
*TF
l : server/util_script.c line=408 column=15
l
 && : true=0, false=0
&
& apr_isspace(* dereference : enter=0, leave=0
*
l : server/util_script.c line=408 column=15
l
)) {
553            ++ : pass=0
+
+l : server/util_script.c line=408 column=15
l
;
554        }
555
556        if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(w : server/util_script.c line=408 column=11
w
, "Content-type")) {
557            char *tmp;
558
559            /* Nuke trailing whitespace */
560
561            char *endp = l : server/util_script.c line=408 column=15
l
 + : pass=0
+
 strlen : enter=0, leave=0

strlen : /usr/include/string.h line=399 column=15
s
trlen(l : server/util_script.c line=408 column=15
l
- : pass=0
-
 1;
562            while : true=0, false=0
w
hile (endp : server/util_script.c line=561 column=19
e
ndp > : true=0, false=0
MC/DC independently affect : true=0, false=0
>TF
 l : server/util_script.c line=408 column=15
l
 && : true=0, false=0
&
& apr_isspace(* dereference : enter=0, leave=0
*
endp : server/util_script.c line=561 column=19
e
ndp)) {
563                *endp : server/util_script.c line=561 column=19
e
ndp-- : pass=0
-
= : enter=0, leave=0
=
 '\0';
564            }
565
566            tmp : server/util_script.c line=557 column=19
t
mp = : 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/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, l : server/util_script.c line=408 column=15
l
);
567            ap_content_type_tolower : enter=0, leave=0

ap_content_type_tolower : include/httpd.h line=1733 column=18
a
p_content_type_tolower(tmp : server/util_script.c line=557 column=19
t
mp);
568            ap_set_content_type : enter=0, leave=0

ap_set_content_type : include/http_protocol.h line=310 column=18
a
p_set_content_type(r : server/util_script.c line=403 column=61
r
tmp : server/util_script.c line=557 column=19
t
mp);
569        }
570        /*
571         * If the script returned a specific status, that's what
572         * we'll use - otherwise we assume 200 OK.
573         */
574        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(w : server/util_script.c line=408 column=11
w
, "Status")) {
575            r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>status : include/httpd.h line=822 column=9
s
tatus = : enter=0, leave=0
=
 cgi_status : server/util_script.c line=410 column=9
c
gi_status = : pass=0
=
 atoi : enter=0, leave=0

atoi : /usr/include/stdlib.h line=148 column=12
a
toi(l : server/util_script.c line=408 column=15
l
);
576            r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>status_line : include/httpd.h line=820 column=17
s
tatus_line = : 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(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>pool : include/httpd.h line=780 column=17
p
ool, l : server/util_script.c line=408 column=15
l
);
577        }
578        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(w : server/util_script.c line=408 column=11
w
, "Location")) {
579            apr_table_set : enter=0, leave=0

apr_table_set : /usr/include/apr-1/apr_tables.h line=269 column=19
a
pr_table_set(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, w : server/util_script.c line=408 column=11
w
l : server/util_script.c line=408 column=15
l
);
580        }
581        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(w : server/util_script.c line=408 column=11
w
, "Content-Length")) {
582            apr_table_set : enter=0, leave=0

apr_table_set : /usr/include/apr-1/apr_tables.h line=269 column=19
a
pr_table_set(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, w : server/util_script.c line=408 column=11
w
l : server/util_script.c line=408 column=15
l
);
583        }
584        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(w : server/util_script.c line=408 column=11
w
, "Content-Range")) {
585            apr_table_set : enter=0, leave=0

apr_table_set : /usr/include/apr-1/apr_tables.h line=269 column=19
a
pr_table_set(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, w : server/util_script.c line=408 column=11
w
l : server/util_script.c line=408 column=15
l
);
586        }
587        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(w : server/util_script.c line=408 column=11
w
, "Transfer-Encoding")) {
588            apr_table_set : enter=0, leave=0

apr_table_set : /usr/include/apr-1/apr_tables.h line=269 column=19
a
pr_table_set(r : server/util_script.c line=403 column=61
r
-> : enter=0, leave=0
-
>headers_out : include/httpd.h line=903 column=18
h
eaders_out, w : server/util_script.c line=408 column=11
w
l : server/util_script.c line=408 column=15
l
);
589        }
590        /*
591         * If the script gave us a Last-Modified header, we can't just
592         * pass it on blindly because of restrictions on future values.
593         */
594        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(w : server/util_script.c line=408 column=11
w
, "Last-Modified")) {
595            ap_update_mtime : enter=0, leave=0

ap_update_mtime : include/http_request.h line=198 column=18
a
p_update_mtime(r : server/util_script.c line=403 column=61
r
apr_date_parse_http : enter=0, leave=0

apr_date_parse_http : /usr/include/apr-1/apr_date.h line=73 column=25
a
pr_date_parse_http(l : server/util_script.c line=408 column=15
l
));
596            ap_set_last_modified : enter=0, leave=0

ap_set_last_modified : include/http_protocol.h line=171 column=18
a
p_set_last_modified(r : server/util_script.c line=403 column=61
r
);
597        }
598        else if : true=0, false=0
i
f (! : true=0, false=0
!
strcasecmp : enter=0, leave=0

strcasecmp : /usr/include/string.h line=536 column=12
s
trcasecmp(w : server/util_script.c line=408 column=11
w
, "Set-Cookie")) {
599            apr_table_add : enter=0, leave=0

apr_table_add : /usr/include/apr-1/apr_tables.h line=323 column=19
a
pr_table_add(cookie_table : server/util_script.c line=412 column=18
c
ookie_table, w : server/util_script.c line=408 column=11
w
l : server/util_script.c line=408 column=15
l
);
600        }
601        else {
602            apr_table_add : enter=0, leave=0

apr_table_add : /usr/include/apr-1/apr_tables.h line=323 column=19
a
pr_table_add(merge : server/util_script.c line=411 column=18
m
erge, w : server/util_script.c line=408 column=11
w
l : server/util_script.c line=408 column=15
l
);
603        }
604    }
605
606    return : pass=0
r
eturn OK;
607}
608
609static int getsfunc_FILE : call=0
g
etsfunc_FILE(char *buf, int len, void *f)
610{
611    return : pass=0
r
eturn apr_file_gets : enter=0, leave=0

apr_file_gets : /usr/include/apr-1/apr_file_io.h line=542 column=27
a
pr_file_gets(buf : server/util_script.c line=609 column=32
b
uf, len : server/util_script.c line=609 column=41
l
en, (apr_file_t *) f : server/util_script.c line=609 column=52
f
== : true=0, false=0
=
= APR_SUCCESS;
612}
613
614AP_DECLARE(int) ap_scan_script_header_err : call=0
a
p_scan_script_header_err(request_rec *r, apr_file_t *f,
615                                          char *buffer)
616{
617    return : pass=0
r
eturn ap_scan_script_header_err_core : enter=0, leave=0

ap_scan_script_header_err_core : server/util_script.c line=403 column=17
a
p_scan_script_header_err_core(r : server/util_script.c line=614 column=56
r
buffer : server/util_script.c line=615 column=49
b
uffer, getsfunc_FILE : server/util_script.c line=609 column=12
g
etsfunc_FILE, f : server/util_script.c line=614 column=71
f
);
618}
619
620static int getsfunc_BRIGADE : call=0
g
etsfunc_BRIGADE(char *buf, int len, void *arg)
621{
622    apr_bucket_brigade *bb = (apr_bucket_brigade *)arg : server/util_script.c line=620 column=55
a
rg;
623    const char *dst_end = buf : server/util_script.c line=620 column=35
b
uf + : pass=0
+
 len : server/util_script.c line=620 column=44
l
en - : pass=0
-
 1; /* leave room for terminating null */
624    char *dst = buf : server/util_script.c line=620 column=35
b
uf;
625    apr_bucket *e = APR_BRIGADE_FIRST(bb : server/util_script.c line=622 column=25
b
b);
626    apr_status_t rv;
627    int done = 0;
628
629    while : true=0, false=0
w
hile ((dst : server/util_script.c line=624 column=11
d
st < : true=0, false=0
MC/DC independently affect : true=0, false=0
<TF
 dst_end : server/util_script.c line=623 column=17
d
st_end) && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
done : server/util_script.c line=627 column=9
d
one && : true=0, false=0
&
e : server/util_script.c line=625 column=17
e
 != : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_BRIGADE_SENTINEL(bb : server/util_script.c line=622 column=25
b
b)
630           && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
APR_BUCKET_IS_EOS(e : server/util_script.c line=625 column=17
e
)) {
631        const char *bucket_data;
632        apr_size_t bucket_data_len;
633        const char *src;
634        const char *src_end;
635        apr_bucket * next;
636
637        rv : server/util_script.c line=626 column=18
r
= : pass=0
=
 apr_bucket_read(e : server/util_script.c line=625 column=17
e
, &bucket_data : server/util_script.c line=631 column=21
b
ucket_data, &bucket_data_len : server/util_script.c line=632 column=20
b
ucket_data_len,
638                             APR_BLOCK_READ : /usr/include/apr-1/apr_buckets.h line=58 column=5 APR_BLOCK_READ);
639        if : true=0, false=0
i
f (rv : server/util_script.c line=626 column=18
r
!= : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
= APR_SUCCESS || : true=0, false=0
|
| (bucket_data_len : server/util_script.c line=632 column=20
b
ucket_data_len == : true=0, false=0
MC/DC independently affect : true=0, false=0
=TF
= 0)) {
640            *dst : server/util_script.c line=624 column=11
d
st = : enter=0, leave=0
=
 '\0';
641            return : pass=0
r
eturn APR_STATUS_IS_TIMEUP(rv : server/util_script.c line=626 column=18
r
v) conditional operator : true=0, false=0
?
 -1 : 0;
642        }
643        src : server/util_script.c line=633 column=21
s
rc = : pass=0
=
 bucket_data : server/util_script.c line=631 column=21
b
ucket_data;
644        src_end : server/util_script.c line=634 column=21
s
rc_end = : pass=0
=
 bucket_data : server/util_script.c line=631 column=21
b
ucket_data + : pass=0
+
 bucket_data_len : server/util_script.c line=632 column=20
b
ucket_data_len;
645        while : true=0, false=0
w
hile ((src : server/util_script.c line=633 column=21
s
rc < : true=0, false=0
MC/DC independently affect : true=0, false=0
<TF
 src_end : server/util_script.c line=634 column=21
s
rc_end) && : true=0, false=0
&
& (dst : server/util_script.c line=624 column=11
d
st < : true=0, false=0
MC/DC independently affect : true=0, false=0
<TF
 dst_end : server/util_script.c line=623 column=17
d
st_end) && : true=0, false=0
&
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
done : server/util_script.c line=627 column=9
d
one) {
646            if : true=0, false=0
i
f (* dereference : enter=0, leave=0
*
src : server/util_script.c line=633 column=21
s
rc == : true=0, false=0
=
= '\n') {
647                done : server/util_script.c line=627 column=9
d
one = : pass=0
=
 1;
648            }
649            else if : true=0, false=0
i
f (* dereference : enter=0, leave=0
*
src : server/util_script.c line=633 column=21
s
rc != : true=0, false=0
!
= '\r') {
650                *dst : server/util_script.c line=624 column=11
d
st++ : pass=0
+
= : enter=0, leave=0
=
 * dereference : enter=0, leave=0
*
src : server/util_script.c line=633 column=21
s
rc;
651            }
652            src : server/util_script.c line=633 column=21
s
rc++ : pass=0
+
+;
653        }
654
655        if : true=0, false=0
i
f (src : server/util_script.c line=633 column=21
s
rc < : true=0, false=0
<
 src_end : server/util_script.c line=634 column=21
s
rc_end) {
656            apr_bucket_split(e : server/util_script.c line=625 column=17
e
src : server/util_script.c line=633 column=21
s
rc - : pass=0
-
 bucket_data : server/util_script.c line=631 column=21
b
ucket_data);
657        }
658        next : server/util_script.c line=635 column=22
n
ext = : pass=0
=
 APR_BUCKET_NEXT(e : server/util_script.c line=625 column=17
e
);
659        APR_BUCKET_REMOVE(e : server/util_script.c line=625 column=17
e
);
660        apr_bucket_destroy(e : server/util_script.c line=625 column=17
e
);
661        e : server/util_script.c line=625 column=17
e
 = : pass=0
=
 next : server/util_script.c line=635 column=22
n
ext;
662    }
663    *dst : server/util_script.c line=624 column=11
d
st = : enter=0, leave=0
=
 0;
664    return : pass=0
r
eturn done : server/util_script.c line=627 column=9
d
one;
665}
666
667AP_DECLARE(int) ap_scan_script_header_err_brigade : call=0
a
p_scan_script_header_err_brigade(request_rec *r,
668                                                  apr_bucket_brigade *bb,
669                                                  char *buffer)
670{
671    return : pass=0
r
eturn ap_scan_script_header_err_core : enter=0, leave=0

ap_scan_script_header_err_core : server/util_script.c line=403 column=17
a
p_scan_script_header_err_core(r : server/util_script.c line=667 column=64
r
buffer : server/util_script.c line=669 column=57
b
uffer, getsfunc_BRIGADE : server/util_script.c line=620 column=12
g
etsfunc_BRIGADE, bb : server/util_script.c line=668 column=71
b
b);
672}
673
674struct vastrs {
675    va_list args;
676    int arg;
677    const char *curpos;
678};
679
680static int getsfunc_STRING : call=0
g
etsfunc_STRING(char *w, int len, void *pvastrs)
681{
682    struct vastrs *strs = (struct vastrs*) pvastrs : server/util_script.c line=680 column=52
p
vastrs;
683    const char *p;
684    int t;
685
686    if : true=0, false=0
i
f (! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
strs : server/util_script.c line=682 column=20
s
trs-> : enter=0, leave=0
-
>curpos : server/util_script.c line=677 column=17
c
urpos || : true=0, false=0
|
! : true=0, false=0
MC/DC independently affect : true=0, false=0
!TF
* dereference : enter=0, leave=0
*
strs : server/util_script.c line=682 column=20
s
trs-> : enter=0, leave=0
-
>curpos : server/util_script.c line=677 column=17
c
urpos) {
687        w : server/util_script.c line=680 column=34
w
[0] = : enter=0, leave=0
=
 '\0';
688        return : pass=0
r
eturn 0;
689    }
690    p : server/util_script.c line=683 column=17
p
 = : pass=0
=
 ap_strchr_c(strs : server/util_script.c line=682 column=20
s
trs-> : enter=0, leave=0
-
>curpos : server/util_script.c line=677 column=17
c
urpos, '\n');
691    if : true=0, false=0
i
f (p : server/util_script.c line=683 column=17
p
)
692        ++ : pass=0
+
+p : server/util_script.c line=683 column=17
p
;
693    else
694        p : server/util_script.c line=683 column=17
p
 = : pass=0
=
 ap_strchr_c(strs : server/util_script.c line=682 column=20
s
trs-> : enter=0, leave=0
-
>curpos : server/util_script.c line=677 column=17
c
urpos, '\0');
695    t : server/util_script.c line=684 column=9
t
 = : pass=0
=
 p : server/util_script.c line=683 column=17
p
 - : pass=0
-
 strs : server/util_script.c line=682 column=20
s
trs-> : enter=0, leave=0
-
>curpos : server/util_script.c line=677 column=17
c
urpos;
696    if : true=0, false=0
i
f (t : server/util_script.c line=684 column=9
t
 > : true=0, false=0
>
 len : server/util_script.c line=680 column=41
l
en)
697        t : server/util_script.c line=684 column=9
t
 = : pass=0
=
 len : server/util_script.c line=680 column=41
l
en;
698    strncpy : enter=0, leave=0

strncpy : /usr/include/string.h line=131 column=14
s
trncpy (w : server/util_script.c line=680 column=34
w
strs : server/util_script.c line=682 column=20
s
trs-> : enter=0, leave=0
-
>curpos : server/util_script.c line=677 column=17
c
urpos, t : server/util_script.c line=684 column=9
t
);
699    w : server/util_script.c line=680 column=34
w
[t : server/util_script.c line=684 column=9
t
= : enter=0, leave=0
=
 '\0';
700    if : true=0, false=0
i
f (! : true=0, false=0
!
strs : server/util_script.c line=682 column=20
s
trs-> : enter=0, leave=0
-
>curpos : server/util_script.c line=677 column=17
c
urpos[] : enter=0, leave=0
[
t : server/util_script.c line=684 column=9
t
]) {
701        ++ : pass=0
+
+strs : server/util_script.c line=682 column=20
s
trs-> : enter=0, leave=0
-
>arg : server/util_script.c line=676 column=9
a
rg;
702        strs : server/util_script.c line=682 column=20
s
trs-> : enter=0, leave=0
-
>curpos : server/util_script.c line=677 column=17
c
urpos = : enter=0, leave=0
=
 va_arg(strs : server/util_script.c line=682 column=20
s
trs-> : enter=0, leave=0
-
>args : server/util_script.c line=675 column=13
a
rgs, const char *);
703    }
704    else
705        strs : server/util_script.c line=682 column=20
s
trs-> : enter=0, leave=0
-
>curpos : server/util_script.c line=677 column=17
c
urpos += : enter=0, leave=0
+
t : server/util_script.c line=684 column=9
t
;
706    return : pass=0
r
eturn t : server/util_script.c line=684 column=9
t
;
707}
708
709/* ap_scan_script_header_err_strs() accepts additional const char* args...
710 * each is treated as one or more header lines, and the first non-header
711 * character is returned to **arg, **data.  (The first optional arg is
712 * counted as 0.)
713 */
714AP_DECLARE_NONSTD(int) ap_scan_script_header_err_strs : call=0
a
p_scan_script_header_err_strs(request_rec *r,
715                                                      char *buffer,
716                                                      const char **termch,
717                                                      int *termarg, ...)
718{
719    struct vastrs strs;
720    int res;
721
722    va_start(strs : server/util_script.c line=719 column=19
s
trs.args : server/util_script.c line=675 column=13
a
rgs, termarg : server/util_script.c line=717 column=60
t
ermarg);
723    strs : server/util_script.c line=719 column=19
s
trs.arg : server/util_script.c line=676 column=9
a
rg = : pass=0
=
 0;
724    strs : server/util_script.c line=719 column=19
s
trs.curpos : server/util_script.c line=677 column=17
c
urpos = : pass=0
=
 va_arg(strs : server/util_script.c line=719 column=19
s
trs.args : server/util_script.c line=675 column=13
a
rgs, char*);
725    res : server/util_script.c line=720 column=9
r
es = : pass=0
=
 ap_scan_script_header_err_core : enter=0, leave=0

ap_scan_script_header_err_core : server/util_script.c line=403 column=17
a
p_scan_script_header_err_core(r : server/util_script.c line=714 column=68
r
buffer : server/util_script.c line=715 column=61
b
uffer, getsfunc_STRING : server/util_script.c line=680 column=12
g
etsfunc_STRING, (void *) &strs : server/util_script.c line=719 column=19
s
trs);
726    if : true=0, false=0
i
f (termch : server/util_script.c line=716 column=68
t
ermch)
727        *termch : server/util_script.c line=716 column=68
t
ermch = : enter=0, leave=0
=
 strs : server/util_script.c line=719 column=19
s
trs.curpos : server/util_script.c line=677 column=17
c
urpos;
728    if : true=0, false=0
i
f (termarg : server/util_script.c line=717 column=60
t
ermarg)
729        *termarg : server/util_script.c line=717 column=60
t
ermarg = : enter=0, leave=0
=
 strs : server/util_script.c line=719 column=19
s
trs.arg : server/util_script.c line=676 column=9
a
rg;
730    va_end(strs : server/util_script.c line=719 column=19
s
trs.args : server/util_script.c line=675 column=13
a
rgs);
731    return : pass=0
r
eturn res : server/util_script.c line=720 column=9
r
es;
732}
733[EOF]


Generated by expcov