Open GoogleCodeExporter opened 9 years ago
版本0.3.1.7 // //统计=号,如果就1个 // if (StringUtils.charCount(result, '=') == 1) // { // result = result.replaceAll("=", (FLAG + "=" + FLAG).intern()); // } // else // { // result = result.replaceAll("<=", (FLAG + "<=" + FLAG).intern()); // result = result.replaceAll(">=", (FLAG + ">=" + FLAG).intern()); // result = result.replaceAll("==", (FLAG + "==" + FLAG).intern()); // result = result.replaceAll("!=", (FLAG + "!=" + FLAG).intern()); // if (result.indexOf("<=") == -1) // { // result = result.replaceAll("<", (FLAG + "<" + FLAG).intern()); // } // if (result.indexOf(">=") == -1) // { // result = result.replaceAll(">", (FLAG + ">" + FLAG).intern()); // } // } 通过引擎源代码上述操作,对于一个=号进行加@处理,但当处 理>=,<=时,也是一个等号,会被拆分为@>@=@造成判断错误,我� ��个人理解是正确应该拆成@>=@, @<=@ 例如:3+2>=5 @3@+@2@>@=@5 Command中的key-value对很多直接用位置,例如value[1]符号,// } 通过引擎源代码上述操作,对于一个=号进行加@处理,但当处 理>=,<=时,也是一个等号,会被拆分为@>@=@造成判断错误,我� ��个人理解是正确应该拆成@>=@, @<=@ 例如:3+2>=5 @3@+@2@>@=@5 Command中的key-value对很多直接用位置,例如// } 通过引擎源代码上述操作,对于一个=号进行加@处理,但当处 理>=,<=时,也是一个等号,会被拆分为@>@=@造成判断错误,我� ��个人理解是正确应该拆成@>=@, @<=@ 例如:3+2>=5 @3@+@2@>@=@5 Command中的key-value对很多直接用索引位置,例如 //分析命令行 temps = commandSplit(cmd); //获取include xxx中的脚本文件名称 String fileName = (String) temps.get(1); 中get(1)这类都直接使用的索引编号,和 //基本赋值语句,例:set var = 1 if (len == 4) { //最后一个就是结果 result = temps.get(3).toString(); } 等等这类,如果上面那个样子拆分就会出错,因为>和=占了2�� �位置......
Original issue reported on code.google.com by 719976...@qq.com on 10 Aug 2011 at 9:18
719976...@qq.com
这部分代码确实存在漏洞(本来这是小弟09年单纯为了解决 set var = n+n 之类的问题写的|||)。事实上,那时我完全没有考虑四则运�� �后追加条件判定的情况,因此最近小弟会将这部分整个重构� ��下,万分感谢您的告知。
Original comment by loontest@gmail.com on 27 Aug 2011 at 5:22
loontest@gmail.com
Original issue reported on code.google.com by
719976...@qq.com
on 10 Aug 2011 at 9:18