aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFengGu <flygoast@126.com>2014-07-30 14:45:08 +0800
committerFengGu <flygoast@126.com>2014-07-30 14:45:08 +0800
commitbfa56738af63907a719b054d0743b98ebc661d3c (patch)
treea3b0adc186e73b867335e87c1332075aa11a3129 /src
parenta176d172221387b37a83fe68a0b8d9cfd9908386 (diff)
downloadnginx-bfa56738af63907a719b054d0743b98ebc661d3c.tar.gz
nginx-bfa56738af63907a719b054d0743b98ebc661d3c.zip
Dav: ngx_http_map_uri_to_path() errors were not checked.
Once error occured, it could lead to use uninitialized variables to log, even more segmentation fault.
Diffstat (limited to 'src')
-rw-r--r--src/http/modules/ngx_http_dav_module.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/http/modules/ngx_http_dav_module.c b/src/http/modules/ngx_http_dav_module.c
index e7f9e9ae3..529aba533 100644
--- a/src/http/modules/ngx_http_dav_module.c
+++ b/src/http/modules/ngx_http_dav_module.c
@@ -212,7 +212,10 @@ ngx_http_dav_put_handler(ngx_http_request_t *r)
return;
}
- ngx_http_map_uri_to_path(r, &path, &root, 0);
+ if (ngx_http_map_uri_to_path(r, &path, &root, 0) == NULL) {
+ ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
+ return;
+ }
path.len--;
@@ -320,7 +323,9 @@ ngx_http_dav_delete_handler(ngx_http_request_t *r)
ok:
- ngx_http_map_uri_to_path(r, &path, &root, 0);
+ if (ngx_http_map_uri_to_path(r, &path, &root, 0) == NULL) {
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
+ }
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http delete filename: \"%s\"", path.data);
@@ -488,6 +493,9 @@ ngx_http_dav_mkcol_handler(ngx_http_request_t *r, ngx_http_dav_loc_conf_t *dlcf)
}
p = ngx_http_map_uri_to_path(r, &path, &root, 0);
+ if (p == NULL) {
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
+ }
*(p - 1) = '\0';
r->uri.len--;
@@ -666,7 +674,9 @@ destination_done:
overwrite_done:
- ngx_http_map_uri_to_path(r, &path, &root, 0);
+ if (ngx_http_map_uri_to_path(r, &path, &root, 0) == NULL) {
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
+ }
ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
"http copy from: \"%s\"", path.data);
@@ -674,7 +684,9 @@ overwrite_done:
uri = r->uri;
r->uri = duri;
- ngx_http_map_uri_to_path(r, &copy.path, &root, 0);
+ if (ngx_http_map_uri_to_path(r, &copy.path, &root, 0) == NULL) {
+ return NGX_HTTP_INTERNAL_SERVER_ERROR;
+ }
r->uri = uri;