--- a/components/lighttpd/patches/07-parfait-errors.patch Sat Apr 05 19:21:02 2014 -0700
+++ b/components/lighttpd/patches/07-parfait-errors.patch Mon Mar 31 06:47:28 2014 -0700
@@ -1,28 +1,6 @@
Developed in-house, fed to community.
http://redmine.lighttpd.net/issues/2530
-Partially accepted, others should be fixed by version or not
-at all, parfait annotations are ignored. Target version 1.4.34.
---- src/mod_webdav.c 2013-10-11 07:42:39.116745543 -0700
-+++ src/mod_webdav.c 2013-10-11 07:43:19.220464118 -0700
-@@ -1717,7 +1717,7 @@
- if (-1 == c->file.fd && /* open the file if not already open */
- -1 == (c->file.fd = open(c->file.name->ptr, O_RDONLY))) {
- log_error_write(srv, __FILE__, __LINE__, "ss", "open failed: ", strerror(errno));
--
-+ close(fd);
- return HANDLER_ERROR;
- }
-
-@@ -1726,7 +1726,7 @@
- strerror(errno), c->file.name, c->file.fd);
- close(c->file.fd);
- c->file.fd = -1;
--
-+ close(fd);
- return HANDLER_ERROR;
- }
-
--- src/lempar.c 2012-08-31 07:11:20.000000000 -0700
+++ src/lempar.c 2013-10-14 02:10:29.201323553 -0700
@@ -486,6 +486,9 @@
@@ -49,24 +27,6 @@
s->mysql_pre = buffer_init();
s->mysql_post = buffer_init();
-@@ -248,7 +251,7 @@
-
- if (NULL == (s->mysql = mysql_init(NULL))) {
- log_error_write(srv, __FILE__, __LINE__, "s", "mysql_init() failed, exiting...");
--
-+ buffer_free(sel);
- return HANDLER_ERROR;
- }
-
-@@ -268,7 +271,7 @@
- FOO(mydb), s->port, FOO(mysock), 0)) {
- #endif
- log_error_write(srv, __FILE__, __LINE__, "s", mysql_error(s->mysql));
--
-+ buffer_free(sel);
- return HANDLER_ERROR;
- }
- #undef FOO
--- src/lemon.c 2012-08-31 07:11:20.000000000 -0700
+++ src/lemon.c 2013-10-14 04:29:24.547185717 -0700
@@ -453,13 +453,11 @@
@@ -101,27 +61,8 @@
return NULL;
}
---- src/array.c 2010-08-17 02:04:38.000000000 -0700
-+++ src/array.c 2013-10-14 07:05:54.354135229 -0700
-@@ -168,6 +168,7 @@
- data_unset *array_replace(array *a, data_unset *du) {
- int ndx;
-
-+ if (du == NULL) return NULL;
- if (-1 == (ndx = array_get_index(a, du->key->ptr, du->key->used, NULL))) {
- array_insert_unique(a, du);
- return NULL;
--- src/configfile.c 2012-11-07 06:50:29.000000000 -0800
+++ src/configfile.c 2013-10-15 06:45:37.918474628 -0700
-@@ -1121,7 +1121,7 @@
- if (NULL != getcwd(dcwd->value->ptr, dcwd->value->size - 1)) {
- dcwd->value->used = strlen(dcwd->value->ptr) + 1;
- buffer_copy_string_len(dcwd->key, CONST_STR_LEN("var.CWD"));
-- array_insert_unique(srv->config, (data_unset *)dcwd);
-+ if (array_insert_unique(srv->config, (data_unset *)dcwd) == -1) dcwd->free(dcwd);
- }
-
- ret = config_parse_file(srv, &context, fn);
@@ -1131,12 +1131,14 @@
context_free(&context);
@@ -145,32 +86,6 @@
return -1;
}
-@@ -1159,19 +1162,23 @@
- }
-
- prepends = (data_array *)configparser_merge_data((data_unset *)prepends, (data_unset *)modules);
-+ if (prepends == NULL) {
-+ /* Parfait_ALLOW memory-leak - false positive dcwd variable - memory is properly freed on server close */
-+ return -1;
-+ }
- buffer_copy_string_buffer(prepends->key, modules->key);
- array_replace(srv->config, (data_unset *)prepends);
- modules->free((data_unset *)modules);
- modules = prepends;
-
- /* append default modules */
-- if (NULL == array_get_element(modules->value, "mod_dirlisting")) {
-+ if (modules != NULL && NULL == array_get_element(modules->value, "mod_dirlisting")) {
- ds = data_string_init();
- buffer_copy_string_len(ds->value, CONST_STR_LEN("mod_dirlisting"));
- array_insert_unique(modules->value, (data_unset *)ds);
- }
-
-- if (NULL == array_get_element(modules->value, "mod_staticfile")) {
-+ if (modules != NULL && NULL == array_get_element(modules->value, "mod_staticfile")) {
- ds = data_string_init();
- buffer_copy_string_len(ds->value, CONST_STR_LEN("mod_staticfile"));
- array_insert_unique(modules->value, (data_unset *)ds);
@@ -1200,9 +1207,11 @@