Browse Source

Fold 'options' parameter into wops->unlink method

migration/unlabaled-1.3.2
Sara Golemon 23 years ago
parent
commit
65d359d71a
  1. 2
      ext/standard/file.c
  2. 2
      main/php_streams.h
  3. 18
      main/streams/plain_wrapper.c

2
ext/standard/file.c

@ -1434,7 +1434,7 @@ PHP_FUNCTION(unlink)
php_error_docref(NULL TSRMLS_CC, E_WARNING, "%s does not allow unlinking", wrapper->wops->label ? wrapper->wops->label : "Wrapper");
RETURN_FALSE;
}
RETURN_BOOL(wrapper->wops->unlink(wrapper, filename, context TSRMLS_CC));
RETURN_BOOL(wrapper->wops->unlink(wrapper, filename, ENFORCE_SAFE_MODE | REPORT_ERRORS, context TSRMLS_CC));
}
/* }}} */

2
main/php_streams.h

@ -147,7 +147,7 @@ typedef struct _php_stream_wrapper_ops {
const char *label;
/* delete a file */
int (*unlink)(php_stream_wrapper *wrapper, char *url, php_stream_context *context TSRMLS_DC);
int (*unlink)(php_stream_wrapper *wrapper, char *url, int options, php_stream_context *context TSRMLS_DC);
} php_stream_wrapper_ops;
struct _php_stream_wrapper {

18
main/streams/plain_wrapper.c

@ -889,7 +889,7 @@ static int php_plain_files_url_stater(php_stream_wrapper *wrapper, char *url, ph
return VCWD_STAT(url, &ssb->sb);
}
static int php_plain_files_unlink(php_stream_wrapper *wrapper, char *url, php_stream_context *context TSRMLS_DC)
static int php_plain_files_unlink(php_stream_wrapper *wrapper, char *url, int options, php_stream_context *context TSRMLS_DC)
{
char *p;
int ret;
@ -900,17 +900,21 @@ static int php_plain_files_unlink(php_stream_wrapper *wrapper, char *url, php_st
url = p + 3;
}
if (PG(safe_mode) && !php_checkuid(url, NULL, CHECKUID_CHECK_FILE_AND_DIR)) {
return 0;
}
if (options & ENFORCE_SAFE_MODE) {
if (PG(safe_mode) && !php_checkuid(url, NULL, CHECKUID_CHECK_FILE_AND_DIR)) {
return 0;
}
if (php_check_open_basedir(url TSRMLS_CC)) {
return 0;
if (php_check_open_basedir(url TSRMLS_CC)) {
return 0;
}
}
ret = VCWD_UNLINK(url);
if (ret == -1) {
php_error_docref1(NULL TSRMLS_CC, url, E_WARNING, "%s", strerror(errno));
if (options & REPORT_ERRORS) {
php_error_docref1(NULL TSRMLS_CC, url, E_WARNING, "%s", strerror(errno));
}
return 0;
}
/* Clear stat cache */

Loading…
Cancel
Save