--- parser3/src/main/pa_string.C 2001/03/10 11:03:49 1.34 +++ parser3/src/main/pa_string.C 2001/03/11 08:16:35 1.37 @@ -1,5 +1,9 @@ /* - $Id: pa_string.C,v 1.34 2001/03/10 11:03:49 paf Exp $ + Parser + Copyright (c) 2001 ArtLebedev Group (http://www.artlebedev.com) + Author: Alexander Petrosyan (http://design.ru/paf) + + $Id: pa_string.C,v 1.37 2001/03/11 08:16:35 paf Exp $ */ #include @@ -143,7 +147,7 @@ String& String::append(const String& src return *this; } void String::set_lang(Chunk::Row *row, Untaint_lang lang, size_t size) { - if(lang==APPENDED) + if(lang==PASS_APPENDED) return; while(size--) { @@ -187,7 +191,22 @@ char *String::cstr() const { if(row==append_here) goto break2; - memcpy(copy_here, row->item.ptr, row->item.size); + switch(row->item.lang) { + case NO: + case YES: // for VString.get_double of tainted values + case AS_IS: + memcpy(copy_here, row->item.ptr, row->item.size); + break; + case HTML_TYPO: + memset(copy_here, '?', row->item.size); + break; + default: + THROW(0,0, + this, + "unknown untaint language #%d of %d piece", + static_cast(row->item.lang), + i); + } copy_here+=row->item.size; row++; }