From fb73a47e4064d5a532926b47ec33d42991b63d2b Mon Sep 17 00:00:00 2001 From: "William A. Rowe Jr" Date: Thu, 27 Jun 2013 17:16:56 +0000 Subject: [PATCH] mod_dav: Do not fail PROPPATCH when prop namespace is not known. PR: 52559 Backports: r1476644 Submitted by: Diego Santa Cruz Reviewed by: minfrin, wrowe, rjung git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x@1497457 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES | 3 +++ STATUS | 7 ------- modules/dav/fs/dbm.c | 10 +++++++++- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index d8f3ce459f4..cee983c249f 100644 --- a/CHANGES +++ b/CHANGES @@ -51,6 +51,9 @@ Changes with Apache 2.2.25 namespace httpd segfaults. PR 52559 [Diego Santa Cruz ] + *) mod_dav: Do not fail PROPPATCH when prop namespace is not known. + PR 52559 [Diego Santa Cruz ] + Changes with Apache 2.2.24 *) SECURITY: CVE-2012-3499 (cve.mitre.org) diff --git a/STATUS b/STATUS index dc8a4ffbd73..affca73ef1a 100644 --- a/STATUS +++ b/STATUS @@ -96,13 +96,6 @@ RELEASE SHOWSTOPPERS: PATCHES ACCEPTED TO BACKPORT FROM TRUNK: [ start all new proposals below, under PATCHES PROPOSED. ] - * mod_dav: Do not fail PROPPATCH when prop namespace is not known. PR 52559 - [Diego Santa Cruz ] - trunk patch: http://svn.apache.org/r1476644 - 2.4.x patch: http://svn.apache.org/r1486459 - 2.2.x patch: trunk patch works (minus CHANGES) - +1: minfrin, wrowe, rjung - * mod_dav: Do not segfault on PROPFIND with a zero length DBM. PR 52559 [Diego Santa Cruz ] This is the third patch in PR 52559. The other two are already diff --git a/modules/dav/fs/dbm.c b/modules/dav/fs/dbm.c index 040c3e3d6fc..ec421056ce6 100644 --- a/modules/dav/fs/dbm.c +++ b/modules/dav/fs/dbm.c @@ -191,7 +191,15 @@ void dav_dbm_close(dav_db *db) dav_error * dav_dbm_fetch(dav_db *db, apr_datum_t key, apr_datum_t *pvalue) { - apr_status_t status = apr_dbm_fetch(db->file, key, pvalue); + apr_status_t status; + + if (!key.dptr) { + /* no key could be created (namespace not known) => no value */ + memset(pvalue, 0, sizeof(*pvalue)); + status = APR_SUCCESS; + } else { + status = apr_dbm_fetch(db->file, key, pvalue); + } return dav_fs_dbm_error(db, NULL, status); } -- 2.47.2