Disable symlinks: initialization of the "disable_symlinks" field in

ngx_open_file_info_t moved to a separate function.

This is preparation for the "from=" parameter implementation of the
"disable_symlinks" directive.
This commit is contained in:
Valentin Bartenev 2012-02-27 16:51:28 +00:00
parent 346791187f
commit 0e05ca0404
10 changed files with 65 additions and 33 deletions

View File

@ -109,9 +109,10 @@ ngx_http_flv_handler(ngx_http_request_t *r)
of.min_uses = clcf->open_file_cache_min_uses;
of.errors = clcf->open_file_cache_errors;
of.events = clcf->open_file_cache_events;
#if (NGX_HAVE_OPENAT)
of.disable_symlinks = clcf->disable_symlinks;
#endif
if (ngx_http_set_disable_symlinks(r, clcf, &path, &of) != NGX_OK) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
!= NGX_OK)

View File

@ -129,9 +129,10 @@ ngx_http_gzip_static_handler(ngx_http_request_t *r)
of.min_uses = clcf->open_file_cache_min_uses;
of.errors = clcf->open_file_cache_errors;
of.events = clcf->open_file_cache_events;
#if (NGX_HAVE_OPENAT)
of.disable_symlinks = clcf->disable_symlinks;
#endif
if (ngx_http_set_disable_symlinks(r, clcf, &path, &of) != NGX_OK) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
!= NGX_OK)

View File

@ -209,9 +209,10 @@ ngx_http_index_handler(ngx_http_request_t *r)
of.test_only = 1;
of.errors = clcf->open_file_cache_errors;
of.events = clcf->open_file_cache_events;
#if (NGX_HAVE_OPENAT)
of.disable_symlinks = clcf->disable_symlinks;
#endif
if (ngx_http_set_disable_symlinks(r, clcf, &path, &of) != NGX_OK) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
!= NGX_OK)
@ -307,9 +308,10 @@ ngx_http_index_test_dir(ngx_http_request_t *r, ngx_http_core_loc_conf_t *clcf,
of.test_only = 1;
of.valid = clcf->open_file_cache_valid;
of.errors = clcf->open_file_cache_errors;
#if (NGX_HAVE_OPENAT)
of.disable_symlinks = clcf->disable_symlinks;
#endif
if (ngx_http_set_disable_symlinks(r, clcf, &dir, &of) != NGX_OK) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
if (ngx_open_cached_file(clcf->open_file_cache, &dir, &of, r->pool)
!= NGX_OK)

View File

@ -394,9 +394,11 @@ ngx_http_log_script_write(ngx_http_request_t *r, ngx_http_log_script_t *script,
of.test_only = 1;
of.errors = clcf->open_file_cache_errors;
of.events = clcf->open_file_cache_events;
#if (NGX_HAVE_OPENAT)
of.disable_symlinks = clcf->disable_symlinks;
#endif
if (ngx_http_set_disable_symlinks(r, clcf, &path, &of) != NGX_OK) {
/* simulate successful logging */
return len;
}
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
!= NGX_OK)
@ -444,9 +446,11 @@ ngx_http_log_script_write(ngx_http_request_t *r, ngx_http_log_script_t *script,
of.valid = llcf->open_file_cache_valid;
of.min_uses = llcf->open_file_cache_min_uses;
of.directio = NGX_OPEN_FILE_DIRECTIO_OFF;
#if (NGX_HAVE_OPENAT)
of.disable_symlinks = clcf->disable_symlinks;
#endif
if (ngx_http_set_disable_symlinks(r, clcf, &log, &of) != NGX_OK) {
/* simulate successful logging */
return len;
}
if (ngx_open_cached_file(llcf->open_file_cache, &log, &of, r->pool)
!= NGX_OK)

View File

@ -440,9 +440,10 @@ ngx_http_mp4_handler(ngx_http_request_t *r)
of.min_uses = clcf->open_file_cache_min_uses;
of.errors = clcf->open_file_cache_errors;
of.events = clcf->open_file_cache_events;
#if (NGX_HAVE_OPENAT)
of.disable_symlinks = clcf->disable_symlinks;
#endif
if (ngx_http_set_disable_symlinks(r, clcf, &path, &of) != NGX_OK) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
!= NGX_OK)

View File

@ -94,9 +94,10 @@ ngx_http_static_handler(ngx_http_request_t *r)
of.min_uses = clcf->open_file_cache_min_uses;
of.errors = clcf->open_file_cache_errors;
of.events = clcf->open_file_cache_events;
#if (NGX_HAVE_OPENAT)
of.disable_symlinks = clcf->disable_symlinks;
#endif
if (ngx_http_set_disable_symlinks(r, clcf, &path, &of) != NGX_OK) {
return NGX_HTTP_INTERNAL_SERVER_ERROR;
}
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
!= NGX_OK)

View File

@ -662,9 +662,10 @@ sendfile(r, filename, offset = -1, bytes = 0)
of.min_uses = clcf->open_file_cache_min_uses;
of.errors = clcf->open_file_cache_errors;
of.events = clcf->open_file_cache_events;
#if (NGX_HAVE_OPENAT)
of.disable_symlinks = clcf->disable_symlinks;
#endif
if (ngx_http_set_disable_symlinks(r, clcf, &path, &of) != NGX_OK) {
XSRETURN_EMPTY;
}
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
!= NGX_OK)

View File

@ -1320,9 +1320,11 @@ ngx_http_core_try_files_phase(ngx_http_request_t *r,
of.test_only = 1;
of.errors = clcf->open_file_cache_errors;
of.events = clcf->open_file_cache_events;
#if (NGX_HAVE_OPENAT)
of.disable_symlinks = clcf->disable_symlinks;
#endif
if (ngx_http_set_disable_symlinks(r, clcf, &path, &of) != NGX_OK) {
ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
return NGX_OK;
}
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
!= NGX_OK)
@ -2645,6 +2647,18 @@ ngx_http_cleanup_add(ngx_http_request_t *r, size_t size)
}
ngx_int_t
ngx_http_set_disable_symlinks(ngx_http_request_t *r,
ngx_http_core_loc_conf_t *clcf, ngx_str_t *path, ngx_open_file_info_t *of)
{
#if (NGX_HAVE_OPENAT)
of->disable_symlinks = clcf->disable_symlinks;
#endif
return NGX_OK;
}
static char *
ngx_http_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *dummy)
{

View File

@ -509,6 +509,10 @@ ngx_int_t ngx_http_output_filter(ngx_http_request_t *r, ngx_chain_t *chain);
ngx_int_t ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *chain);
ngx_int_t ngx_http_set_disable_symlinks(ngx_http_request_t *r,
ngx_http_core_loc_conf_t *clcf, ngx_str_t *path, ngx_open_file_info_t *of);
extern ngx_module_t ngx_http_core_module;
extern ngx_uint_t ngx_http_max_module;

View File

@ -1505,9 +1505,12 @@ ngx_http_script_file_code(ngx_http_script_engine_t *e)
of.test_only = 1;
of.errors = clcf->open_file_cache_errors;
of.events = clcf->open_file_cache_events;
#if (NGX_HAVE_OPENAT)
of.disable_symlinks = clcf->disable_symlinks;
#endif
if (ngx_http_set_disable_symlinks(r, clcf, &path, &of) != NGX_OK) {
e->ip = ngx_http_script_exit;
e->status = NGX_HTTP_INTERNAL_SERVER_ERROR;
return;
}
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
!= NGX_OK)