zval **arg1, **arg2;
FILE *fp;
char *p, *tmp = NULL;
- char *b, buf[1024];
+ char *b, *buf = 0;
php_stream *stream;
if (ZEND_NUM_ARGS() != 2 || zend_get_parameters_ex(2, &arg1, &arg2) == FAILURE) {
b = NULL;
}
}
+
if (b) {
- snprintf(buf, sizeof(buf), "%s%s", PG(safe_mode_exec_dir), b);
+ spprintf(&buf, 0, "%s%s", PG(safe_mode_exec_dir), b);
} else {
- snprintf(buf, sizeof(buf), "%s/%s", PG(safe_mode_exec_dir), Z_STRVAL_PP(arg1));
+ spprintf(&buf, 0, "%s/%s", PG(safe_mode_exec_dir), Z_STRVAL_PP(arg1));
}
tmp = php_escape_shell_cmd(buf);
if (!fp) {
php_error_docref2(NULL TSRMLS_CC, buf, p, E_WARNING, "%s", strerror(errno));
efree(p);
+ efree(buf);
RETURN_FALSE;
}
+
+ efree(buf);
+
} else {
fp = VCWD_POPEN(Z_STRVAL_PP(arg1), p);
if (!fp) {