--- parser3/src/targets/cgi/parser3.C 2009/08/30 05:29:46 1.253 +++ parser3/src/targets/cgi/parser3.C 2009/10/06 11:39:58 1.255 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_PARSER3_C="$Date: 2009/08/30 05:29:46 $"; +static const char * const IDENT_PARSER3_C="$Date: 2009/10/06 11:39:58 $"; #include "pa_config_includes.h" @@ -165,9 +165,13 @@ static void die_or_abort(const char* fmt // prepare header // let's be honest, that's bad we couldn't produce valid output - SAPI::add_header_attribute(SAPI_info, HTTP_STATUS, "500"); - SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_TYPE, "text/plain"); - SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_LENGTH, format(content_length, "%u")); + // capitalized headers passed for preventing malloc during capitalization + SAPI::add_header_attribute(SAPI_info, HTTP_STATUS_CAPITALIZED, "500"); + SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_TYPE_CAPITALIZED, "text/plain"); + // don't use 'format' function because it calls malloc + char content_length_cstr[MAX_NUMBER]; + snprintf(content_length_cstr, sizeof(content_length_cstr), "%u", content_length); + SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_LENGTH_CAPITALIZED, content_length_cstr); // send header SAPI::send_header(SAPI_info); @@ -237,7 +241,7 @@ size_t SAPI::read_post(SAPI_Info& , char void SAPI::add_header_attribute(SAPI_Info& , const char* dont_store_key, const char* dont_store_value) { if( cgi && (!request || !request->console.was_used()) ) - printf("%s: %s\n", dont_store_key, dont_store_value); + printf("%s: %s\n", capitalize(dont_store_key), dont_store_value); } /// @todo intelligent cache-control @@ -762,8 +766,12 @@ int main(int argc, char *argv[]) { int content_length=strlen(buf); // prepare header - SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_TYPE, "text/plain"); - SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_LENGTH, format(content_length, "%u")); + // capitalized headers are used for preventing malloc during capitalization + SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_TYPE_CAPITALIZED, "text/plain"); + // don't use 'format' function because it calls malloc + char content_length_cstr[MAX_NUMBER]; + snprintf(content_length_cstr, MAX_NUMBER, "%u", content_length); + SAPI::add_header_attribute(SAPI_info, HTTP_CONTENT_LENGTH_CAPITALIZED, content_length_cstr); // send header SAPI::send_header(SAPI_info);