#include <sqlite.h>
+#ifndef safe_emalloc
+#define safe_emalloc(a,b,c) emalloc((a)*(b)+(c))
+#endif
+
ZEND_DECLARE_MODULE_GLOBALS(sqlite)
extern int sqlite_encode_binary(const unsigned char *in, int n, unsigned char *out);
efree(callable);
if (argc > 1) {
- zargs = (zval ***)emalloc((argc - 1) * sizeof(zval **));
+ zargs = (zval ***)safe_emalloc((argc - 1), sizeof(zval **), 0);
for (i = 0; i < argc-1; i++) {
zargs[i] = emalloc(sizeof(zval *));
}
if (argc > 0) {
- zargs = (zval ***)emalloc(argc * sizeof(zval **));
+ zargs = (zval ***)safe_emalloc(argc, sizeof(zval **), 0);
for (i = 0; i < argc; i++) {
zargs[i] = emalloc(sizeof(zval *));
}
zargc = argc + 1;
- zargs = (zval ***)emalloc(zargc * sizeof(zval **));
+ zargs = (zval ***)safe_emalloc(zargc, sizeof(zval **), 0);
/* first arg is always the context zval */
context_p = (zval **)sqlite_aggregate_context(func, sizeof(*context_p));