diff options
author | Florian Obser <florian@cvs.openbsd.org> | 2014-08-06 13:40:19 +0000 |
---|---|---|
committer | Florian Obser <florian@cvs.openbsd.org> | 2014-08-06 13:40:19 +0000 |
commit | a127b08b4a9ad4146c260233fd2103e03720ed4f (patch) | |
tree | 7316ef520d1643b1f19d29c71155f5d0b27dd109 /usr.sbin | |
parent | 6aff585301b1106863650213597f6c3d31a09555 (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.c | 12 |
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)) |