return SUCCESS;
} else {
if (param->type == STR_PARAM) {
- if (PHPDBG_G(exec)) {
- phpdbg_notice("Unsetting old execution context: %s", PHPDBG_G(exec));
- efree(PHPDBG_G(exec));
- PHPDBG_G(exec) = NULL;
- }
+ struct stat sb;
+
+ if (VCWD_STAT(param->str, &sb) != FAILURE) {
+ if (sb.st_mode & S_IFREG|S_IFLNK) {
+ if (PHPDBG_G(exec)) {
+ phpdbg_notice("Unsetting old execution context: %s", PHPDBG_G(exec));
+ efree(PHPDBG_G(exec));
+ PHPDBG_G(exec) = NULL;
+ }
- if (PHPDBG_G(ops)) {
- phpdbg_notice("Destroying compiled opcodes");
- phpdbg_clean(0 TSRMLS_CC);
- }
+ if (PHPDBG_G(ops)) {
+ phpdbg_notice("Destroying compiled opcodes");
+ phpdbg_clean(0 TSRMLS_CC);
+ }
- PHPDBG_G(exec) = phpdbg_resolve_path(param->str TSRMLS_CC);
+ PHPDBG_G(exec) = phpdbg_resolve_path(param->str TSRMLS_CC);
- if (!PHPDBG_G(exec)) {
- phpdbg_error("Cannot get real file path");
- return FAILURE;
- }
+ if (!PHPDBG_G(exec)) {
+ phpdbg_error("Cannot get real file path");
+ return FAILURE;
+ }
- PHPDBG_G(exec_len) = strlen(PHPDBG_G(exec));
+ PHPDBG_G(exec_len) = strlen(PHPDBG_G(exec));
- phpdbg_notice("Set execution context: %s", PHPDBG_G(exec));
+ phpdbg_notice("Set execution context: %s", PHPDBG_G(exec));
+
+ } else {
+ phpdbg_error("Cannot use %s as execution context, not a valid file or symlink", param->str);
+ }
+ } else {
+ phpdbg_error("Cannot stat %s, ensure the file exists", param->str);
+ }
} else {
phpdbg_error("Unsupported parameter type (%s) for command", phpdbg_get_param_type(param TSRMLS_CC));
}
}
-
return SUCCESS;
} /* }}} */