htmlparser2#Tokenizer.prototype._stateInNamedEntity bug

来源:互联网 发布:网络自动化运维工具 编辑:程序博客网 时间:2024/05/22 01:17

source:

Tokenizer.prototype._stateInNamedEntity = function(c){        if(c === ";"){                this._parseNamedEntityStrict();                if(this._sectionStart + 1 < this._index && !this._xmlMode){                        this._parseLegacyEntity();                }                this._state = this._baseState;        } else if((c < "a" || c > "z") && (c < "A" || c > "Z") && (c < "0" || c > "9")){                if(this._xmlMode);                else if(this._sectionStart + 1 === this._index);                else if(this._baseState !== TEXT){                         if( c !== "="){                                this._parseNamedEntityStrict();  // this is a bug line.                       }                } else {                        this._parseLegacyEntity();                }                this._state = this._baseState;                this._index--;        }};

input: &trade_type=xxx,  the  c is "_",
output: ™type=xxx

fix: if((c < "a" || c > "z") && (c < "A" || c > "Z") && (c < "0" || c > "9"))
and  c !== "="
do nothing!

0 0