--- parser3/src/main/untaint.C 2003/03/20 15:05:59 1.115.2.12.2.7 +++ parser3/src/main/untaint.C 2003/03/21 13:42:32 1.115.2.12.2.9 @@ -5,7 +5,7 @@ Author: Alexandr Petrosian (http://paf.design.ru) */ -static const char* IDENT_UNTAINT_C="$Date: 2003/03/20 15:05:59 $"; +static const char* IDENT_UNTAINT_C="$Date: 2003/03/21 13:42:32 $"; #include "pa_string.h" @@ -144,7 +144,7 @@ inline bool need_quote_http_header(const or marking ALL pieces of it with a @a lang when @a forced to, and propagating OPTIMIZE language bit. */ -String& String::append_to(String& dest, Untaint_lang lang, bool forced) const { +String& String::append_to(String& dest, Language lang, bool forced) const { if(!*this) return dest; @@ -153,11 +153,11 @@ String& String::append_to(String& dest, // next: fragment infos - if(lang==UL_PASS_APPENDED) // without language-chage string? - dest.fragments.append(fragments, 0, fragments.count()); + if(lang==L_PASS_APPENDED) // without language-chage string? + dest.fragments.append(fragments); else if(forced) //forcing passed lang? dest.fragments+=Fragment(lang, length()); - else if(lang&UL_OPTIMIZE_BIT) { + else if(lang&L_OPTIMIZE_BIT) { Array_iterator i(fragments); while(i.has_next()) { const Fragment& fragment=i.next(); @@ -165,9 +165,9 @@ String& String::append_to(String& dest, // tainted piece would get OPTIMIZED bit from 'lang' // clean piece would be marked OPTIMIZED manually // pieces with determined languages [not tainted|clean] would retain theirs langs - dest.fragments+=Fragment(static_cast( - fragment.lang==UL_TAINTED?lang:( - fragment.lang==UL_CLEAN?UL_CLEAN|UL_OPTIMIZE_BIT: // ORing with OPTIMIZED flag + dest.fragments+=Fragment(static_cast( + fragment.lang==L_TAINTED?lang:( + fragment.lang==L_CLEAN?L_CLEAN|L_OPTIMIZE_BIT: // ORing with OPTIMIZED flag fragment.lang)), fragment.length); } @@ -176,7 +176,7 @@ String& String::append_to(String& dest, while(i.has_next()) { const Fragment& fragment=i.next(); dest.fragments+=Fragment( - fragment.lang==UL_TAINTED?lang:fragment.lang, + fragment.lang==L_TAINTED?lang:fragment.lang, fragment.length); } } @@ -223,8 +223,8 @@ inline void ec_append(CORD_ec result, CO CORD_next(pos); } } -CORD String::cstr_to_cord(Untaint_lang lang, - SQL_Connection *connection, +CORD String::cstr_to_cord(Language lang, + SQL_Connection* connection, const Request_charsets *charsets) const { CORD_ec result; CORD_ec_init(result); CORD_pos pos; CORD_set_pos(pos, body, 0); @@ -238,12 +238,12 @@ CORD String::cstr_to_cord(Untaint_lang l size_t fragment_length=fragment.length; fragment_end=fragment_begin+fragment_length; - Untaint_lang to_lang=lang==UL_UNSPECIFIED?fragment.lang:lang; + Language to_lang=lang==L_UNSPECIFIED?fragment.lang:lang; - switch(to_lang & ~UL_OPTIMIZE_BIT) { - case UL_CLEAN: - case UL_TAINTED: - case UL_AS_IS: + switch(to_lang & ~L_OPTIMIZE_BIT) { + case L_CLEAN: + case L_TAINTED: + case L_AS_IS: // clean piece // tainted piece, but undefined untaint language @@ -253,7 +253,7 @@ CORD String::cstr_to_cord(Untaint_lang l // tainted, untaint language: as-is ec_append(result, pos, fragment_length); break; - case UL_FILE_SPEC: + case L_FILE_SPEC: // tainted, untaint language: file [name] escape( // Macintosh has problems with small Russian letter 'r' @@ -265,7 +265,7 @@ CORD String::cstr_to_cord(Untaint_lang l ); break; #ifdef LATER - case UL_URI: + case L_URI: // tainted, untaint language: uri { const char *substr= @@ -288,14 +288,14 @@ CORD String::cstr_to_cord(Untaint_lang l } break; #endif - case UL_HTTP_HEADER: + case L_HTTP_HEADER: // tainted, untaint language: http-field-content-text escape( encode(need_uri_encode, '%'); ); break; #ifdef LATER - case UL_MAIL_HEADER: + case L_MAIL_HEADER: // tainted, untaint language: mail-header // http://www.ietf.org/rfc/rfc2047.txt if(charsets) { @@ -342,7 +342,7 @@ CORD String::cstr_to_cord(Untaint_lang l } break; #endif - case UL_TABLE: + case L_TABLE: // tainted, untaint language: table escape(switch(c) { case '\t': to_char(' '); break; @@ -351,7 +351,7 @@ CORD String::cstr_to_cord(Untaint_lang l }); break; #ifdef PA_SQL - case UL_SQL: + case L_SQL: // tainted, untaint language: sql if(connection) { dest+=connection->quote(0, @@ -366,7 +366,7 @@ CORD String::cstr_to_cord(Untaint_lang l "untaint in SQL language failed - no connection specified"); break; #endif - case UL_JS: + case L_JS: escape(switch(c) { case '"': to_string("\\\""); break; case '\'': to_string("\\'"); break; @@ -376,7 +376,7 @@ CORD String::cstr_to_cord(Untaint_lang l _default; }); break; - case UL_XML: + case L_XML: escape(switch(c) { case '&': to_string("&"); break; case '>': to_string(">"); break; @@ -386,7 +386,7 @@ CORD String::cstr_to_cord(Untaint_lang l _default; }); break; - case UL_HTML: + case L_HTML: escape(switch(c) { case '&': to_string("&"); break; case '>': to_string(">"); break; @@ -403,7 +403,7 @@ CORD String::cstr_to_cord(Untaint_lang l break; // never } #ifdef LATER - if(to_lang & UL_OPTIMIZE_BIT) { + if(to_lang & L_OPTIMIZE_BIT) { // optimizing whitespace char *stop=dest; dest=start; for(char c=start; src