summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorMaxim Dounin <mdounin@mdounin.ru>2019-01-31 19:36:51 +0300
committerMaxim Dounin <mdounin@mdounin.ru>2019-01-31 19:36:51 +0300
commitf7d53c4ae4cf126570bc8290773eb84671632aac (patch)
treeda45cc084cba06dd2afa994a2de7458c7d99944c
parent80f105b054b6d7da2da8650f763471f27b47a562 (diff)
downloadnginx-f7d53c4ae4cf126570bc8290773eb84671632aac.tar.gz
nginx-f7d53c4ae4cf126570bc8290773eb84671632aac.tar.bz2
SSL: separate checks for errors in ngx_ssl_read_password_file().
Checking multiple errors at once is a bad practice, as in general it is not guaranteed that an object can be used after the error. In this particular case, checking errors after multiple allocations can result in excessive errors being logged when there is no memory available.
-rw-r--r--src/event/ngx_event_openssl.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/event/ngx_event_openssl.c b/src/event/ngx_event_openssl.c
index 7002059c6..aa5ccdd33 100644
--- a/src/event/ngx_event_openssl.c
+++ b/src/event/ngx_event_openssl.c
@@ -947,10 +947,13 @@ ngx_ssl_read_password_file(ngx_conf_t *cf, ngx_str_t *file)
return NULL;
}
- cln = ngx_pool_cleanup_add(cf->temp_pool, 0);
passwords = ngx_array_create(cf->temp_pool, 4, sizeof(ngx_str_t));
+ if (passwords == NULL) {
+ return NULL;
+ }
- if (cln == NULL || passwords == NULL) {
+ cln = ngx_pool_cleanup_add(cf->temp_pool, 0);
+ if (cln == NULL) {
return NULL;
}