nginx: check for realpath() == NULL in ETag patch
Thanks to Gabriel Ebner!
This commit is contained in:
parent
135d54f535
commit
f03302b636
@ -1,14 +1,14 @@
|
|||||||
From 3ed81ef9e973247d0c95bf240b3bd2e640f2605a Mon Sep 17 00:00:00 2001
|
From a0ac82e4c79f359a7001a265cdb57e35978c6c23 Mon Sep 17 00:00:00 2001
|
||||||
From: Yegor Timoshenko <yegortimoshenko@riseup.net>
|
From: Yegor Timoshenko <yegortimoshenko@riseup.net>
|
||||||
Date: Fri, 28 Sep 2018 03:27:04 +0000
|
Date: Fri, 28 Sep 2018 03:27:04 +0000
|
||||||
Subject: [PATCH] If root is in Nix store, set ETag to its path hash
|
Subject: [PATCH] If root is in Nix store, set ETag to its path hash
|
||||||
|
|
||||||
---
|
---
|
||||||
src/http/ngx_http_core_module.c | 56 +++++++++++++++++++++++++++------
|
src/http/ngx_http_core_module.c | 55 +++++++++++++++++++++++++++++----
|
||||||
1 file changed, 47 insertions(+), 9 deletions(-)
|
1 file changed, 49 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
|
diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c
|
||||||
index c57ec00c..d996d7e3 100644
|
index c57ec00c..4eec7ec5 100644
|
||||||
--- a/src/http/ngx_http_core_module.c
|
--- a/src/http/ngx_http_core_module.c
|
||||||
+++ b/src/http/ngx_http_core_module.c
|
+++ b/src/http/ngx_http_core_module.c
|
||||||
@@ -1583,6 +1583,7 @@ ngx_http_set_etag(ngx_http_request_t *r)
|
@@ -1583,6 +1583,7 @@ ngx_http_set_etag(ngx_http_request_t *r)
|
||||||
@ -19,17 +19,23 @@ index c57ec00c..d996d7e3 100644
|
|||||||
|
|
||||||
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
|
clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module);
|
||||||
|
|
||||||
@@ -1598,16 +1599,53 @@ ngx_http_set_etag(ngx_http_request_t *r)
|
@@ -1598,16 +1599,58 @@ ngx_http_set_etag(ngx_http_request_t *r)
|
||||||
etag->hash = 1;
|
etag->hash = 1;
|
||||||
ngx_str_set(&etag->key, "ETag");
|
ngx_str_set(&etag->key, "ETag");
|
||||||
|
|
||||||
- etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + 3);
|
- etag->value.data = ngx_pnalloc(r->pool, NGX_OFF_T_LEN + NGX_TIME_T_LEN + 3);
|
||||||
- if (etag->value.data == NULL) {
|
- if (etag->value.data == NULL) {
|
||||||
- etag->hash = 0;
|
|
||||||
- return NGX_ERROR;
|
|
||||||
- }
|
|
||||||
+ real = ngx_realpath(clcf->root.data, NULL);
|
+ real = ngx_realpath(clcf->root.data, NULL);
|
||||||
+
|
+
|
||||||
|
+ if (real == NULL) {
|
||||||
|
etag->hash = 0;
|
||||||
|
return NGX_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
- etag->value.len = ngx_sprintf(etag->value.data, "\"%xT-%xO\"",
|
||||||
|
- r->headers_out.last_modified_time,
|
||||||
|
- r->headers_out.content_length_n)
|
||||||
|
- - etag->value.data;
|
||||||
+ #define NIX_STORE_DIR "/nix/store"
|
+ #define NIX_STORE_DIR "/nix/store"
|
||||||
+ #define NIX_STORE_LEN ngx_strlen(NIX_STORE_DIR)
|
+ #define NIX_STORE_LEN ngx_strlen(NIX_STORE_DIR)
|
||||||
+
|
+
|
||||||
@ -50,11 +56,7 @@ index c57ec00c..d996d7e3 100644
|
|||||||
+
|
+
|
||||||
+ *ptr2++ = '"';
|
+ *ptr2++ = '"';
|
||||||
+ *ptr2 = '\0';
|
+ *ptr2 = '\0';
|
||||||
|
+
|
||||||
- etag->value.len = ngx_sprintf(etag->value.data, "\"%xT-%xO\"",
|
|
||||||
- r->headers_out.last_modified_time,
|
|
||||||
- r->headers_out.content_length_n)
|
|
||||||
- - etag->value.data;
|
|
||||||
+ etag->value.len = ngx_strlen(ptr1);
|
+ etag->value.len = ngx_strlen(ptr1);
|
||||||
+ etag->value.data = ngx_pnalloc(r->pool, etag->value.len);
|
+ etag->value.data = ngx_pnalloc(r->pool, etag->value.len);
|
||||||
+
|
+
|
||||||
@ -83,5 +85,5 @@ index c57ec00c..d996d7e3 100644
|
|||||||
r->headers_out.etag = etag;
|
r->headers_out.etag = etag;
|
||||||
|
|
||||||
--
|
--
|
||||||
2.18.0
|
2.19.0
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user