aboutsummaryrefslogtreecommitdiffstats
path: root/main/lighttpd/0028-fix-segfaults-in-many-plugins-if-they-failed-configu.patch
diff options
context:
space:
mode:
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.patch447
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
+