--- parser3/src/main/untaint.C 2005/08/09 08:14:53 1.135 +++ parser3/src/main/untaint.C 2006/02/18 17:43:19 1.137 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char * const IDENT_UNTAINT_C="$Date: 2005/08/09 08:14:53 $"; +static const char * const IDENT_UNTAINT_C="$Date: 2006/02/18 17:43:19 $"; #include "pa_string.h" @@ -92,6 +92,9 @@ inline bool need_http_header_encode(unsi return need_uri_encode(c); } +inline bool need_regex_escape(unsigned char c){ + return strchr("\\^$.[]|()?*+{}", c)!=0; +} // String @@ -371,6 +374,8 @@ int cstr_to_string_body_block(char alang bool email=false; uchar c; for(const char* src=mail_ptr; (c=(uchar)*src++); ) { + if(c=='\r' || c=='\n') + c=' '; if(to_quoted_printable && (c==',' || c == '"' || addr_spec_soon(src-1/*position to 'c'*/))) { email=c=='<'; to_string("?="); @@ -463,6 +468,14 @@ int cstr_to_string_body_block(char alang default: _default; break; }); break; + case String::L_REGEX: + // tainted, untaint language: regex + escape( + if(need_regex_escape(c)) + to_char('\\') + _default; + ); + break; default: SAPI::abort("unknown untaint language #%d", static_cast(to_lang)); // should never