diff options
Diffstat (limited to 'main/lighttpd/0028-fix-segfaults-in-many-plugins-if-they-failed-configu.patch')
-rw-r--r-- | main/lighttpd/0028-fix-segfaults-in-many-plugins-if-they-failed-configu.patch | 447 |
1 files changed, 447 insertions, 0 deletions
diff --git a/main/lighttpd/0028-fix-segfaults-in-many-plugins-if-they-failed-configu.patch b/main/lighttpd/0028-fix-segfaults-in-many-plugins-if-they-failed-configu.patch new file mode 100644 index 0000000000..d35b478424 --- /dev/null +++ b/main/lighttpd/0028-fix-segfaults-in-many-plugins-if-they-failed-configu.patch @@ -0,0 +1,447 @@ +From 33cebeb0f778d437e1a6070504f588b2531fa291 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Stefan=20B=C3=BChler?= <stbuehler@web.de> +Date: Thu, 14 May 2015 09:38:33 +0000 +Subject: [PATCH 28/29] fix segfaults in many plugins if they failed + configuration +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Stefan Bühler <stbuehler@web.de> + +git-svn-id: svn://svn.lighttpd.net/lighttpd/branches/lighttpd-1.4.x@2988 152afb58-edef-0310-8abb-c4023f1b3aa9 +--- + NEWS | 1 + + src/mod_access.c | 2 ++ + src/mod_accesslog.c | 2 +- + src/mod_alias.c | 2 +- + src/mod_auth.c | 2 +- + src/mod_cgi.c | 2 ++ + src/mod_cml.c | 2 ++ + src/mod_compress.c | 2 +- + src/mod_evasive.c | 2 ++ + src/mod_evhost.c | 2 +- + src/mod_expire.c | 3 ++- + src/mod_extforward.c | 2 +- + src/mod_fastcgi.c | 2 +- + src/mod_flv_streaming.c | 2 +- + src/mod_indexfile.c | 2 +- + src/mod_magnet.c | 2 +- + src/mod_proxy.c | 7 +++---- + src/mod_redirect.c | 2 ++ + src/mod_rewrite.c | 3 +++ + src/mod_rrdtool.c | 2 ++ + src/mod_scgi.c | 2 +- + src/mod_secure_download.c | 2 ++ + src/mod_setenv.c | 2 ++ + src/mod_skeleton.c | 2 +- + src/mod_ssi.c | 2 ++ + src/mod_staticfile.c | 2 ++ + src/mod_trigger_b4_dl.c | 2 +- + src/mod_uploadprogress.c | 2 ++ + src/mod_userdir.c | 2 ++ + src/mod_usertrack.c | 2 ++ + src/mod_webdav.c | 2 +- + 31 files changed, 49 insertions(+), 19 deletions(-) + +diff --git a/NEWS b/NEWS +index 4d19144..dd2d1b8 100644 +--- a/NEWS ++++ b/NEWS +@@ -18,6 +18,7 @@ NEWS + * major refactoring of internal buffer/chunk handling + * [mod_auth] use crypt_r instead of crypt if available + * fix error message for T_CONFIG_ARRAY config values if an entry value is not a string ++ * fix segfaults in many plugins if they failed configuration + + - 1.4.35 - 2014-03-12 + * [network/ssl] fix build error if TLSEXT is disabled +diff --git a/src/mod_access.c b/src/mod_access.c +index a6c25a4..e6a9a14 100644 +--- a/src/mod_access.c ++++ b/src/mod_access.c +@@ -40,6 +40,8 @@ FREE_FUNC(mod_access_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + array_free(s->access_deny); + + free(s); +diff --git a/src/mod_accesslog.c b/src/mod_accesslog.c +index 9bb3fe2..f5be7d2 100644 +--- a/src/mod_accesslog.c ++++ b/src/mod_accesslog.c +@@ -414,7 +414,7 @@ FREE_FUNC(mod_accesslog_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if (!s) continue; ++ if (NULL == s) continue; + + if (!buffer_string_is_empty(s->access_logbuffer)) { + if (s->log_access_fd != -1) { +diff --git a/src/mod_alias.c b/src/mod_alias.c +index 4625973..f9d7b51 100644 +--- a/src/mod_alias.c ++++ b/src/mod_alias.c +@@ -45,7 +45,7 @@ FREE_FUNC(mod_alias_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if(!s) continue; ++ if (NULL == s) continue; + + array_free(s->alias); + +diff --git a/src/mod_auth.c b/src/mod_auth.c +index 1870893..edddaa8 100644 +--- a/src/mod_auth.c ++++ b/src/mod_auth.c +@@ -60,7 +60,7 @@ FREE_FUNC(mod_auth_free) { + for (i = 0; i < srv->config_context->used; i++) { + mod_auth_plugin_config *s = p->config_storage[i]; + +- if (!s) continue; ++ if (NULL == s) continue; + + array_free(s->auth_require); + buffer_free(s->auth_plain_groupfile); +diff --git a/src/mod_cgi.c b/src/mod_cgi.c +index 8a7cc2b..01b1877 100644 +--- a/src/mod_cgi.c ++++ b/src/mod_cgi.c +@@ -127,6 +127,8 @@ FREE_FUNC(mod_cgi_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + array_free(s->cgi); + + free(s); +diff --git a/src/mod_cml.c b/src/mod_cml.c +index baa23b3..98f8d77 100644 +--- a/src/mod_cml.c ++++ b/src/mod_cml.c +@@ -43,6 +43,8 @@ FREE_FUNC(mod_cml_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + buffer_free(s->ext); + + buffer_free(s->mc_namespace); +diff --git a/src/mod_compress.c b/src/mod_compress.c +index f0ffa1c..29d5ab5 100644 +--- a/src/mod_compress.c ++++ b/src/mod_compress.c +@@ -90,7 +90,7 @@ FREE_FUNC(mod_compress_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if (!s) continue; ++ if (NULL == s) continue; + + array_free(s->compress); + buffer_free(s->compress_cache_dir); +diff --git a/src/mod_evasive.c b/src/mod_evasive.c +index d9b8732..da45c9a 100644 +--- a/src/mod_evasive.c ++++ b/src/mod_evasive.c +@@ -58,6 +58,8 @@ FREE_FUNC(mod_evasive_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + free(s); + } + free(p->config_storage); +diff --git a/src/mod_evhost.c b/src/mod_evhost.c +index e728551..3c49adf 100644 +--- a/src/mod_evhost.c ++++ b/src/mod_evhost.c +@@ -46,7 +46,7 @@ FREE_FUNC(mod_evhost_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if (!s) continue; ++ if (NULL == s) continue; + + if(s->path_pieces) { + size_t j; +diff --git a/src/mod_expire.c b/src/mod_expire.c +index e26c3c6..0794c15 100644 +--- a/src/mod_expire.c ++++ b/src/mod_expire.c +@@ -62,7 +62,8 @@ FREE_FUNC(mod_expire_free) { + size_t i; + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; +- if (!s) continue; ++ ++ if (NULL == s) continue; + + array_free(s->expire_url); + free(s); +diff --git a/src/mod_extforward.c b/src/mod_extforward.c +index 7f77982..557c505 100644 +--- a/src/mod_extforward.c ++++ b/src/mod_extforward.c +@@ -135,7 +135,7 @@ FREE_FUNC(mod_extforward_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if (!s) continue; ++ if (NULL == s) continue; + + array_free(s->forwarder); + array_free(s->headers); +diff --git a/src/mod_fastcgi.c b/src/mod_fastcgi.c +index d16306c..5be73df 100644 +--- a/src/mod_fastcgi.c ++++ b/src/mod_fastcgi.c +@@ -693,7 +693,7 @@ FREE_FUNC(mod_fastcgi_free) { + plugin_config *s = p->config_storage[i]; + fcgi_exts *exts; + +- if (!s) continue; ++ if (NULL == s) continue; + + exts = s->exts; + +diff --git a/src/mod_flv_streaming.c b/src/mod_flv_streaming.c +index db041e2..6e92c74 100644 +--- a/src/mod_flv_streaming.c ++++ b/src/mod_flv_streaming.c +@@ -54,7 +54,7 @@ FREE_FUNC(mod_flv_streaming_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if (!s) continue; ++ if (NULL == s) continue; + + array_free(s->extensions); + +diff --git a/src/mod_indexfile.c b/src/mod_indexfile.c +index 13d18e2..3c57256 100644 +--- a/src/mod_indexfile.c ++++ b/src/mod_indexfile.c +@@ -51,7 +51,7 @@ FREE_FUNC(mod_indexfile_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if (!s) continue; ++ if (NULL == s) continue; + + array_free(s->indexfiles); + +diff --git a/src/mod_magnet.c b/src/mod_magnet.c +index 8f89d4e..0d99fdf 100644 +--- a/src/mod_magnet.c ++++ b/src/mod_magnet.c +@@ -71,7 +71,7 @@ FREE_FUNC(mod_magnet_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if (!s) continue; ++ if (NULL == s) continue; + + array_free(s->url_raw); + array_free(s->physical_path); +diff --git a/src/mod_proxy.c b/src/mod_proxy.c +index dfdc636..7821072 100644 +--- a/src/mod_proxy.c ++++ b/src/mod_proxy.c +@@ -167,12 +167,11 @@ FREE_FUNC(mod_proxy_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if (s) { ++ if (NULL == s) continue; + +- array_free(s->extensions); ++ array_free(s->extensions); + +- free(s); +- } ++ free(s); + } + free(p->config_storage); + } +diff --git a/src/mod_redirect.c b/src/mod_redirect.c +index 615c7db..769c8c8 100644 +--- a/src/mod_redirect.c ++++ b/src/mod_redirect.c +@@ -47,6 +47,8 @@ FREE_FUNC(mod_redirect_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + pcre_keyvalue_buffer_free(s->redirect); + + free(s); +diff --git a/src/mod_rewrite.c b/src/mod_rewrite.c +index 5191a64..113cc54 100644 +--- a/src/mod_rewrite.c ++++ b/src/mod_rewrite.c +@@ -146,6 +146,9 @@ FREE_FUNC(mod_rewrite_free) { + size_t i; + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; ++ ++ if (NULL == s) continue; ++ + rewrite_rule_buffer_free(s->rewrite); + rewrite_rule_buffer_free(s->rewrite_NF); + +diff --git a/src/mod_rrdtool.c b/src/mod_rrdtool.c +index 0532e4d..6b8cdae 100644 +--- a/src/mod_rrdtool.c ++++ b/src/mod_rrdtool.c +@@ -65,6 +65,8 @@ FREE_FUNC(mod_rrd_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + buffer_free(s->path_rrdtool_bin); + buffer_free(s->path_rrd); + +diff --git a/src/mod_scgi.c b/src/mod_scgi.c +index 9e88de3..733b51c 100644 +--- a/src/mod_scgi.c ++++ b/src/mod_scgi.c +@@ -554,7 +554,7 @@ FREE_FUNC(mod_scgi_free) { + plugin_config *s = p->config_storage[i]; + scgi_exts *exts; + +- if (!s) continue; ++ if (NULL == s) continue; + + exts = s->exts; + +diff --git a/src/mod_secure_download.c b/src/mod_secure_download.c +index da98b61..d85872d 100644 +--- a/src/mod_secure_download.c ++++ b/src/mod_secure_download.c +@@ -65,6 +65,8 @@ FREE_FUNC(mod_secdownload_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + buffer_free(s->secret); + buffer_free(s->doc_root); + buffer_free(s->uri_prefix); +diff --git a/src/mod_setenv.c b/src/mod_setenv.c +index 60e9b55..34075c1 100644 +--- a/src/mod_setenv.c ++++ b/src/mod_setenv.c +@@ -67,6 +67,8 @@ FREE_FUNC(mod_setenv_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + array_free(s->request_header); + array_free(s->response_header); + array_free(s->environment); +diff --git a/src/mod_skeleton.c b/src/mod_skeleton.c +index 68d272d..8461279 100644 +--- a/src/mod_skeleton.c ++++ b/src/mod_skeleton.c +@@ -79,7 +79,7 @@ FREE_FUNC(mod_skeleton_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if (!s) continue; ++ if (NULL == s) continue; + + array_free(s->match); + +diff --git a/src/mod_ssi.c b/src/mod_ssi.c +index ed3b75c..07b695d 100644 +--- a/src/mod_ssi.c ++++ b/src/mod_ssi.c +@@ -69,6 +69,8 @@ FREE_FUNC(mod_ssi_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + array_free(s->ssi_extension); + buffer_free(s->content_type); + +diff --git a/src/mod_staticfile.c b/src/mod_staticfile.c +index d40aa31..22929bb 100644 +--- a/src/mod_staticfile.c ++++ b/src/mod_staticfile.c +@@ -63,6 +63,8 @@ FREE_FUNC(mod_staticfile_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + array_free(s->exclude_ext); + + free(s); +diff --git a/src/mod_trigger_b4_dl.c b/src/mod_trigger_b4_dl.c +index e1fa993..4a3eac2 100644 +--- a/src/mod_trigger_b4_dl.c ++++ b/src/mod_trigger_b4_dl.c +@@ -89,7 +89,7 @@ FREE_FUNC(mod_trigger_b4_dl_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if (!s) continue; ++ if (NULL == s) continue; + + buffer_free(s->db_filename); + buffer_free(s->download_url); +diff --git a/src/mod_userdir.c b/src/mod_userdir.c +index 682f950..f6f1d8a 100644 +--- a/src/mod_userdir.c ++++ b/src/mod_userdir.c +@@ -60,6 +60,8 @@ FREE_FUNC(mod_userdir_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + array_free(s->include_user); + array_free(s->exclude_user); + buffer_free(s->path); +diff --git a/src/mod_usertrack.c b/src/mod_usertrack.c +index 11aad95..3adedcf 100644 +--- a/src/mod_usertrack.c ++++ b/src/mod_usertrack.c +@@ -48,6 +48,8 @@ FREE_FUNC(mod_usertrack_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + ++ if (NULL == s) continue; ++ + buffer_free(s->cookie_name); + buffer_free(s->cookie_domain); + +diff --git a/src/mod_webdav.c b/src/mod_webdav.c +index 654108a..2fff8c3 100644 +--- a/src/mod_webdav.c ++++ b/src/mod_webdav.c +@@ -120,7 +120,7 @@ FREE_FUNC(mod_webdav_free) { + for (i = 0; i < srv->config_context->used; i++) { + plugin_config *s = p->config_storage[i]; + +- if (!s) continue; ++ if (NULL == s) continue; + + buffer_free(s->sqlite_db_name); + #ifdef USE_PROPPATCH +-- +2.4.5 + |