summaryrefslogtreecommitdiff
path: root/usr.sbin
diff options
context:
space:
mode:
authorFlorian Obser <florian@cvs.openbsd.org>2014-08-06 13:40:19 +0000
committerFlorian Obser <florian@cvs.openbsd.org>2014-08-06 13:40:19 +0000
commita127b08b4a9ad4146c260233fd2103e03720ed4f (patch)
tree7316ef520d1643b1f19d29c71155f5d0b27dd109 /usr.sbin
parent6aff585301b1106863650213597f6c3d31a09555 (diff)
Content-Length and Content-Type are transmitted as CONTENT_LENGTH and
CONTENT_TYPE environment variables to cgi scripts, without the HTTP_ prefix. OK reyk@
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/httpd/server_fcgi.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/usr.sbin/httpd/server_fcgi.c b/usr.sbin/httpd/server_fcgi.c
index 1432646b352..d1c93552e5f 100644
--- a/usr.sbin/httpd/server_fcgi.c
+++ b/usr.sbin/httpd/server_fcgi.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: server_fcgi.c,v 1.21 2014/08/04 18:00:06 reyk Exp $ */
+/* $OpenBSD: server_fcgi.c,v 1.22 2014/08/06 13:40:18 florian Exp $ */
/*
* Copyright (c) 2014 Florian Obser <florian@openbsd.org>
@@ -541,8 +541,14 @@ server_fcgi_writeheader(struct client *clt, struct kv *hdr, void *arg)
val = hdr->kv_value;
- if (asprintf(&name, "HTTP_%s", key) == -1)
- return (-1);
+ if (strcasecmp(key, "Content-Length") == 0 ||
+ strcasecmp(key, "Content-Type") == 0) {
+ if ((name = strdup(key)) == NULL)
+ return (-1);
+ } else {
+ if (asprintf(&name, "HTTP_%s", key) == -1)
+ return (-1);
+ }
for (p = name; *p != '\0'; p++) {
if (isalpha((unsigned char)*p))