TheWindInTheWillows / loon-simple

Automatically exported from code.google.com/p/loon-simple
0 stars 1 forks source link

脚本处理>=,<=等符号出错 #56

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 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

GoogleCodeExporter commented 9 years ago

这部分代码确实存在漏洞(本来这是小弟09年单纯为了解决 
set var = n+n 
之类的问题写的|||)。事实上,那时我完全没有考虑四则运��
�后追加条件判定的情况,因此最近小弟会将这部分整个重构�
��下,万分感谢您的告知。

Original comment by loontest@gmail.com on 27 Aug 2011 at 5:22