--- html.c.old 2009-10-05 12:38:12.000000000 +0900 +++ html.c.new 2009-10-09 02:46:23.000000000 +0900 @@ -648,8 +648,13 @@ MB_WRITE(next_char); this_char |= next_char; pos++; + } else { + *status = FAILURE; } - + } else if (!(this_char >= 0x00 && this_char <= 0x7f) && + !(this_char >= 0xa1 && this_char <= 0xdf)) + { + *status = FAILURE; } break; } @@ -666,8 +671,9 @@ MB_WRITE(next_char); this_char |= next_char; pos++; + } else { + *status = FAILURE; } - } else if (this_char == 0x8e) { /* peek at the next char */ CHECK_LEN(pos, 1); @@ -678,8 +684,9 @@ MB_WRITE(next_char); this_char |= next_char; pos++; + } else { + *status = FAILURE; } - } else if (this_char == 0x8f) { /* peek at the next two char */ unsigned char next2_char; @@ -697,8 +704,11 @@ MB_WRITE(next2_char); this_char |= next2_char; pos++; + } else { + *status = FAILURE; } - + } else if (!(this_char >= 0x00 && this_char <= 0x7f)) { + *status = FAILURE; } break; }