CVE:CVE-2007-1888
CNNVD:CNNVD-200704-081
PHP是广泛使用的通用目的脚本语言，特别适合于Web开发，可嵌入到HTML中。
PHP的sqlite_udf_decode_binary()函数没有正确地处理对其传送的无效字符串。如果所传送的字符串仅包含有单个\x01字符的话，就会使用空字符串做为参数调用所捆绑sqlite库的sqlite_decode_binary()函数。但API函数并不支持这样的操作，必须使用长度至少为1的字符串调用。
int sqlite_decode_binary(const unsigned char *in, unsigned char *out){
  int i, e;
  unsigned char c;
  e = *(in++);
  i = 0;
  while( (c = *(in++))!=0 ){
    if( c==1 ){
      c = *(in++) - 1;
    }
    out[i++] = c + e;
  }
  return i;
}
如果使用空字符串调用了sqlite_decode_binary()函数的话，就会跳过ASCIIZ终止符，将之后的字节拷贝到目标，直到遇到另一个ASCIIZ字符。这类似于标准的strcpy()溢出。
solution:Upgrade php php to a higher version than 4.0,4.0:beta_4_patch1,4.0:beta1,4.0:beta2,4.0:beta3,4.0:beta4,4.0:rc1,4.0:rc2,4.0.0,4.0.1,4.0.1:patch1,4.0.1:patch2,4.0.2,4.0.3,4.0.3:patch1,4.0.4,4.0.4:patch1,4.0.5,4.0.6,4.0.7,4.0.7:rc1,4.0.7:rc2,4.0.7:rc3,4.1.0,4.1.1,4.1.2,4.2,4.2.0,4.2.1,4.2.2,4.2.3,4.3.0,4.3.1,4.3.2,4.3.3,4.3.4,4.3.5,4.3.6,4.3.7,4.3.8,4.3.9,4.3.10,4.3.11,4.4.0,4.4.1,4.4.2,4.4.3,4.4.4,4.4.5,4.4.6,5.0:rc1,5.0:rc2,5.0:rc3,5.0.0,5.0.0:beta1,5.0.0:beta2,5.0.0:beta3,5.0.0:beta4,5.0.0:rc1,5.0.0:rc2,5.0.0:rc3,5.0.1,5.0.2,5.0.3,5.0.4,5.0.5,5.1.0,5.1.1,5.1.2,5.1.3,5.1.4,5.1.5,5.1.6,5.2.0,5.2.1,5.4.0,and avoid the version 4.0,4.0:beta_4_patch1,4.0:beta1,4.0:beta2,4.0:beta3,4.0:beta4,4.0:rc1,4.0:rc2,4.0.0,4.0.1,4.0.1:patch1,4.0.1:patch2,4.0.2,4.0.3,4.0.3:patch1,4.0.4,4.0.4:patch1,4.0.5,4.0.6,4.0.7,4.0.7:rc1,4.0.7:rc2,4.0.7:rc3,4.1.0,4.1.1,4.1.2,4.2,4.2.0,4.2.1,4.2.2,4.2.3,4.3.0,4.3.1,4.3.2,4.3.3,4.3.4,4.3.5,4.3.6,4.3.7,4.3.8,4.3.9,4.3.10,4.3.11,4.4.0,4.4.1,4.4.2,4.4.3,4.4.4,4.4.5,4.4.6,5.0:rc1,5.0:rc2,5.0:rc3,5.0.0,5.0.0:beta1,5.0.0:beta2,5.0.0:beta3,5.0.0:beta4,5.0.0:rc1,5.0.0:rc2,5.0.0:rc3,5.0.1,5.0.2,5.0.3,5.0.4,5.0.5,5.1.0,5.1.1,5.1.2,5.1.3,5.1.4,5.1.5,5.1.6,5.2.0,5.2.1,5.4.0