# HG changeset patch # User Maxim Dounin # Date 1353459097 0 # Node ID e7467ae416267b1cf470d1aa63c88ce88b147316 # Parent 484aec758d2c34fce25c55f7a7b1b991fd5a0f5e 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. diff -r 484aec758d2c -r e7467ae41626 src/http/modules/ngx_http_dav_module.c --- a/src/http/modules/ngx_http_dav_module.c Tue Nov 20 13:37:55 2012 +0000 +++ b/src/http/modules/ngx_http_dav_module.c Wed Nov 21 00:51:37 2012 +0000 @@ -209,6 +209,11 @@ 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--;