CVE:CVE-2007-3410
CNNVD:CNNVD-200706-465
RealPlayer是一款非常流行的媒体播放器，支持多种格式；HelixPlayer是其开源版本。
RealPlayer/HelixPlayer播放器的墙壁时钟在处理日期格式时存在缓冲区漏洞，远程攻击者可能利用此漏洞控制用户机器。
墙壁时钟(wallclock)功能没有正确地处理HH:mm:ss.f时间格式： 
   924    HX_RESULT
   925    SmilTimeValue::parseWallClockValue(REF(const char*) pCh)
   926    {
   ...
   957        char buf[10]; /* Flawfinder: ignore */
   ...
   962        while (*pCh)
   963        {
   ...
   972             else if (isspace(*pCh) || *pCh == '+' || *pCh == '-' || *pCh == 'Z')
   973             {
   974                 // this will find the last +, - or Z... which is what we want.
   975                 pTimeZone = pCh;
   976             }
   ...
   982             ++pCh;
   983        }
   ...
  1101        if (pTimePos)
  1102        {
  1103        //HH:MM...
  ....
  1133          if (*(pos-1) == ':')
  1134          {
  ....
  1148            if (*(pos-1) == '.')
  1149            {
  1150            // find end.
  1151            UINT32 len = 0;
  1152            if (pTimeZone)
  1153            {
  1154                len = pTimeZone - pos;
  1155            }
  1156            else
  1157            {
  1158                len = end - pos;
  1159            }
  1160            strncpy(buf, pos, len); /* Flawfinder: ignore */
在957行栈缓冲区声明为10字节，该行的标注导致FlawFinder程序忽略这个缓冲区。 
962行开始的循环通过一个函数参数运行，该函数用于寻找表示时间格式中不同部分的字符。如果遇到了空格、"+"、"-"、或"Z"字符，就会记录下位置以备之后使用。如果找到了时间且包含有冒号和逗号，就会到达有漏洞的代码。
1154或1158行计算将要拷贝到栈缓冲区的数据长度，具体取决于是否存在时区。这两处计算都没有考虑buf缓冲区的常数长度，因此在1160行可能出现栈溢出。此外，该行不安全地使用strncpy()也被标记了忽略FlawFinder的标注。
如果用户受骗使用有漏洞的播放器加载了同步多媒体集成语言(SMIL)文件的话，就可能触发这个溢出，导致执行任意指令。
此外RealPlayer和HelixPlayer在处理畸形的.au文件时还可能将0用作除数，导致播放器崩溃。
solution:Upgrade realnetworks helix_player to a higher version than 10.0.5,10.0.6,10.0.7,10.0.8,10.5-gold,and avoid the version 10.0.5,10.0.6,10.0.7,10.0.8,10.5-gold; Upgrade realnetworks realone_player to a higher version than *; Upgrade realnetworks realplayer to a higher version than 10.0,10.1,10.5,and avoid the version 10.0,10.1,10.5; Upgrade realnetworks realplayer_enterprise to a higher version than *