diff --git a/mod_reqin_log.spec b/mod_reqin_log.spec index 9af61b6..de1687c 100644 --- a/mod_reqin_log.spec +++ b/mod_reqin_log.spec @@ -1,4 +1,4 @@ -%global spec_version 1.0.11 +%global spec_version 1.0.12 Name: mod_reqin_log Version: %{spec_version} @@ -37,14 +37,14 @@ install -m 644 %{_pkgroot}/%{_sysconfdir}/httpd/conf.d/mod_reqin_log.conf %{buil %doc %{_docdir}/%{name} %changelog -* Mon Mar 02 2026 Developer - 1.0.11 +* Mon Mar 02 2026 Developer - 1.0.12 +- FIX: Fix buffer corruption in dynbuf_append by copying null terminator during reallocation - PACKAGING: Mark config file as %config(noreplace) to preserve user modifications on upgrade - FIX: Correct JSON string length parameters for query and fragment fields -- FIX: Add null-termination after buffer reallocation in dynbuf_append - CHANGE: Remove unparsed_uri, fragment, and content_length fields from JSON output - TEST: Update unit tests to match dynbuf_append fix -* Mon Mar 02 2026 Developer - 1.0.10 +* Mon Mar 02 2026 Developer - 1.0.11 - FIX: Correct JSON string length parameters for query and fragment fields - FIX: Add null-termination after buffer reallocation in dynbuf_append - CHANGE: Remove unparsed_uri, fragment, and content_length fields from JSON output diff --git a/src/mod_reqin_log.c b/src/mod_reqin_log.c index bc23370..3849eb8 100644 --- a/src/mod_reqin_log.c +++ b/src/mod_reqin_log.c @@ -213,8 +213,7 @@ static void dynbuf_append(dynbuf_t *db, const char *str, apr_size_t len) if (db->len + len >= db->capacity) { apr_size_t new_capacity = (db->len + len + 1) * 2; char *new_data = apr_palloc(db->pool, new_capacity); - memcpy(new_data, db->data, db->len); - new_data[db->len] = '\0'; + memcpy(new_data, db->data, db->len + 1); /* Copy including null terminator */ db->data = new_data; db->capacity = new_capacity; } diff --git a/tests/unit/test_json_serialization.c b/tests/unit/test_json_serialization.c index be625ca..5f3eb18 100644 --- a/tests/unit/test_json_serialization.c +++ b/tests/unit/test_json_serialization.c @@ -43,8 +43,7 @@ static void testbuf_append(testbuf_t *buf, const char *str, size_t len) if (buf->len + len + 1 > buf->cap) { size_t new_cap = (buf->len + len + 1) * 2; char *new_data = apr_palloc(buf->pool, new_cap); - memcpy(new_data, buf->data, buf->len); - new_data[buf->len] = '\0'; + memcpy(new_data, buf->data, buf->len + 1); /* Copy including null terminator */ buf->data = new_data; buf->cap = new_cap; } diff --git a/tests/unit/test_module_real.c b/tests/unit/test_module_real.c index ee099fa..873da24 100644 --- a/tests/unit/test_module_real.c +++ b/tests/unit/test_module_real.c @@ -84,8 +84,7 @@ static void dynbuf_append(dynbuf_t *db, const char *str, apr_size_t len) if (db->len + len >= db->capacity) { apr_size_t new_capacity = (db->len + len + 1) * 2; char *new_data = apr_palloc(db->pool, new_capacity); - memcpy(new_data, db->data, db->len); - new_data[db->len] = '\0'; + memcpy(new_data, db->data, db->len + 1); /* Copy including null terminator */ db->data = new_data; db->capacity = new_capacity; }