mirror of
https://github.com/nginx/nginx.git
synced 2025-02-25 18:55:26 -06:00
Support for disable_symlinks in various modules.
This commit is contained in:
parent
bd1e719bf9
commit
8ce8f6667f
@ -109,6 +109,9 @@ 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_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
||||
!= NGX_OK)
|
||||
@ -127,6 +130,10 @@ ngx_http_flv_handler(ngx_http_request_t *r)
|
||||
break;
|
||||
|
||||
case NGX_EACCES:
|
||||
#if (NGX_HAVE_OPENAT)
|
||||
case NGX_EMLINK:
|
||||
case NGX_ELOOP:
|
||||
#endif
|
||||
|
||||
level = NGX_LOG_ERR;
|
||||
rc = NGX_HTTP_FORBIDDEN;
|
||||
|
@ -129,6 +129,9 @@ 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_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
||||
!= NGX_OK)
|
||||
@ -145,6 +148,10 @@ ngx_http_gzip_static_handler(ngx_http_request_t *r)
|
||||
return NGX_DECLINED;
|
||||
|
||||
case NGX_EACCES:
|
||||
#if (NGX_HAVE_OPENAT)
|
||||
case NGX_EMLINK:
|
||||
case NGX_ELOOP:
|
||||
#endif
|
||||
|
||||
level = NGX_LOG_ERR;
|
||||
break;
|
||||
|
@ -209,6 +209,9 @@ 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_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
||||
!= NGX_OK)
|
||||
@ -220,6 +223,14 @@ ngx_http_index_handler(ngx_http_request_t *r)
|
||||
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||
}
|
||||
|
||||
#if (NGX_HAVE_OPENAT)
|
||||
if (of.err == NGX_EMLINK
|
||||
|| of.err == NGX_ELOOP)
|
||||
{
|
||||
return NGX_HTTP_FORBIDDEN;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (of.err == NGX_ENOTDIR
|
||||
|| of.err == NGX_ENAMETOOLONG
|
||||
|| of.err == NGX_EACCES)
|
||||
@ -296,12 +307,23 @@ 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_open_cached_file(clcf->open_file_cache, &dir, &of, r->pool)
|
||||
!= NGX_OK)
|
||||
{
|
||||
if (of.err) {
|
||||
|
||||
#if (NGX_HAVE_OPENAT)
|
||||
if (of.err == NGX_EMLINK
|
||||
|| of.err == NGX_ELOOP)
|
||||
{
|
||||
return NGX_HTTP_FORBIDDEN;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (of.err == NGX_ENOENT) {
|
||||
*last = c;
|
||||
return ngx_http_index_error(r, clcf, dir.data, NGX_ENOENT);
|
||||
|
@ -373,6 +373,8 @@ ngx_http_log_script_write(ngx_http_request_t *r, ngx_http_log_script_t *script,
|
||||
ngx_http_log_loc_conf_t *llcf;
|
||||
ngx_http_core_loc_conf_t *clcf;
|
||||
|
||||
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
|
||||
|
||||
if (!r->root_tested) {
|
||||
|
||||
/* test root directory existance */
|
||||
@ -384,8 +386,6 @@ ngx_http_log_script_write(ngx_http_request_t *r, ngx_http_log_script_t *script,
|
||||
|
||||
path.data[root] = '\0';
|
||||
|
||||
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
|
||||
|
||||
ngx_memzero(&of, sizeof(ngx_open_file_info_t));
|
||||
|
||||
of.valid = clcf->open_file_cache_valid;
|
||||
@ -394,6 +394,9 @@ 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_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
||||
!= NGX_OK)
|
||||
@ -441,6 +444,9 @@ 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_open_cached_file(llcf->open_file_cache, &log, &of, r->pool)
|
||||
!= NGX_OK)
|
||||
|
@ -440,6 +440,9 @@ 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_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
||||
!= NGX_OK)
|
||||
@ -458,6 +461,10 @@ ngx_http_mp4_handler(ngx_http_request_t *r)
|
||||
break;
|
||||
|
||||
case NGX_EACCES:
|
||||
#if (NGX_HAVE_OPENAT)
|
||||
case NGX_EMLINK:
|
||||
case NGX_ELOOP:
|
||||
#endif
|
||||
|
||||
level = NGX_LOG_ERR;
|
||||
rc = NGX_HTTP_FORBIDDEN;
|
||||
|
@ -94,6 +94,9 @@ 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_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
||||
!= NGX_OK)
|
||||
@ -112,6 +115,10 @@ ngx_http_static_handler(ngx_http_request_t *r)
|
||||
break;
|
||||
|
||||
case NGX_EACCES:
|
||||
#if (NGX_HAVE_OPENAT)
|
||||
case NGX_EMLINK:
|
||||
case NGX_ELOOP:
|
||||
#endif
|
||||
|
||||
level = NGX_LOG_ERR;
|
||||
rc = NGX_HTTP_FORBIDDEN;
|
||||
|
@ -662,6 +662,9 @@ 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_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
||||
!= NGX_OK)
|
||||
|
@ -1505,6 +1505,9 @@ 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_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
||||
!= NGX_OK)
|
||||
|
Loading…
Reference in New Issue
Block a user