/* binary string */
int enclen;
- ret = emalloc( 1 + ((256 * stringlen + 1262) / 253) );
+ ret = emalloc( 1 + 5 + stringlen * (256 / 253) );
ret[0] = '\x01';
enclen = php_sqlite_encode_binary(string, stringlen, ret+1);
RETVAL_STRINGL(ret, enclen+1, 0);
int enclen;
char *ret;
- ret = emalloc( 1 + ((256 * datalen + 1262) / 253) );
+ ret = emalloc( 1 + 5 + datalen * (256 / 253) );
ret[0] = '\x01';
enclen = php_sqlite_encode_binary(data, datalen, ret+1);
RETVAL_STRINGL(ret, enclen+1, 0);
--- /dev/null
+--TEST--
+sqlite: crash inside sqlite_escape_string() & sqlite_udf_encode_binary
+--SKIPIF--
+<?php # vim:ft=php
+if (!extension_loaded("sqlite")) print "skip"; ?>
+--FILE--
+<?php
+ var_dump(strlen(sqlite_escape_string(str_repeat("\0", 20000000))));
+ var_dump(strlen(sqlite_udf_encode_binary(str_repeat("\0", 20000000))));
+?>
+--EXPECT--
+int(20000002)
+int(20000002)