From 799405fc1cad4bfa4fc386ea4e46cad25b515b1d Mon Sep 17 00:00:00 2001 From: Stefan Date: Wed, 24 Mar 2010 18:10:10 +0100 Subject: Fixed suhosin_header_handler to be PHP 5.3.x compatible --- header.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'header.c') diff --git a/header.c b/header.c index 92122ce..d4536d8 100644 --- a/header.c +++ b/header.c @@ -32,7 +32,11 @@ #include "SAPI.h" #include "php_variables.h" +#if PHP_VERSION_ID >= 50300 +static int (*orig_header_handler)(sapi_header_struct *sapi_header, sapi_header_op_enum op, sapi_headers_struct *sapi_headers TSRMLS_DC) = NULL; +#else static int (*orig_header_handler)(sapi_header_struct *sapi_header, sapi_headers_struct *sapi_headers TSRMLS_DC) = NULL; +#endif char *suhosin_encrypt_single_cookie(char *name, int name_len, char *value, int value_len, char *key TSRMLS_DC) { @@ -221,10 +225,20 @@ char *suhosin_cookie_decryptor(TSRMLS_D) /* {{{ suhosin_header_handler */ +#if PHP_VERSION_ID >= 50300 +int suhosin_header_handler(sapi_header_struct *sapi_header, sapi_header_op_enum op, sapi_headers_struct *sapi_headers TSRMLS_DC) +#else int suhosin_header_handler(sapi_header_struct *sapi_header, sapi_headers_struct *sapi_headers TSRMLS_DC) +#endif { int retval = SAPI_HEADER_ADD, i; char *tmp; + +#if PHP_VERSION_ID >= 50300 + if (op != SAPI_HEADER_ADD && op != SAPI_HEADER_REPLACE) { + goto suhosin_skip_header_handling; + } +#endif if (!SUHOSIN_G(allow_multiheader) && sapi_header && sapi_header->header) { @@ -309,10 +323,14 @@ int suhosin_header_handler(sapi_header_struct *sapi_header, sapi_headers_struct sapi_header->header_len = len; } - +suhosin_skip_header_handling: /* If existing call the sapi header handler */ if (orig_header_handler) { +#if PHP_VERSION_ID >= 50300 + retval = orig_header_handler(sapi_header, op, sapi_headers TSRMLS_CC); +#else retval = orig_header_handler(sapi_header, sapi_headers TSRMLS_CC); +#endif } return retval; -- cgit v1.3