]> git.kaiwu.me - nginx.git/commitdiff
Merge of r4919: fixed segfault on PUT in dav module.
authorMaxim Dounin <mdounin@mdounin.ru>
Mon, 10 Dec 2012 17:51:10 +0000 (17:51 +0000)
committerMaxim Dounin <mdounin@mdounin.ru>
Mon, 10 Dec 2012 17:51:10 +0000 (17:51 +0000)
Dav: fixed segfault on PUT if body was already read (ticket #238).

If request body reading happens with different options it's possible
that there will be no r->request_body->temp_file available (or even
no r->request_body available if body was discarded).  Return internal
server error in this case instead of committing suicide by dereferencing
a null pointer.

src/http/modules/ngx_http_dav_module.c

index dbb17ac305503431a097936ffeaf64b2a0a6c5ae..a97c60e44de0229109f5831760df5d411af87017 100644 (file)
@@ -209,6 +209,11 @@ ngx_http_dav_put_handler(ngx_http_request_t *r)
     ngx_ext_rename_file_t     ext;
     ngx_http_dav_loc_conf_t  *dlcf;
 
+    if (r->request_body == NULL || r->request_body->temp_file == NULL) {
+        ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
+        return;
+    }
+
     ngx_http_map_uri_to_path(r, &path, &root, 0);
 
     path.len--;