MCPcopy Create free account
hub / github.com/apache/httpd / ap_fcgi_encoded_env_len

Function ap_fcgi_encoded_env_len

server/util_fcgi.c:116–177  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

114}
115
116AP_DECLARE(apr_size_t) ap_fcgi_encoded_env_len(apr_table_t *env,
117 apr_size_t maxlen,
118 int *starting_elem)
119{
120 const apr_array_header_t *envarr;
121 const apr_table_entry_t *elts;
122 apr_size_t envlen, actualenvlen;
123 int i;
124
125 if (maxlen > AP_FCGI_MAX_CONTENT_LEN) {
126 maxlen = AP_FCGI_MAX_CONTENT_LEN;
127 }
128
129 envarr = apr_table_elts(env);
130 elts = (const apr_table_entry_t *) envarr->elts;
131
132 /* envlen - speculative, may overflow the limit
133 * actualenvlen - len required without overflowing
134 */
135 envlen = actualenvlen = 0;
136 for (i = *starting_elem; i < envarr->nelts; ) {
137 apr_size_t keylen, vallen;
138
139 if (!elts[i].key) {
140 (*starting_elem)++;
141 i++;
142 continue;
143 }
144
145 keylen = strlen(elts[i].key);
146
147 if (keylen >> 7 == 0) {
148 envlen += 1;
149 }
150 else {
151 envlen += 4;
152 }
153
154 envlen += keylen;
155
156 vallen = elts[i].val ? strlen(elts[i].val) : 0;
157
158 if (vallen >> 7 == 0) {
159 envlen += 1;
160 }
161 else {
162 envlen += 4;
163 }
164
165 envlen += vallen;
166
167 if (envlen > maxlen) {
168 break;
169 }
170
171 actualenvlen = envlen;
172 (*starting_elem)++;
173 i++;

Callers 2

send_environmentFunction · 0.85
send_environmentFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected