1
Description: fix denial of service in mod_dav_svn
2
Origin: upstream, http://svn.apache.org/viewvc?view=revision&revision=1454237
4
Index: subversion-1.7.5/subversion/mod_dav_svn/deadprops.c
5
===================================================================
6
--- subversion-1.7.5.orig/subversion/mod_dav_svn/deadprops.c 2010-12-30 15:46:50.000000000 -0500
7
+++ subversion-1.7.5/subversion/mod_dav_svn/deadprops.c 2013-06-21 13:05:32.326538918 -0400
11
const dav_resource *resource = db->resource;
12
+ apr_pool_t *subpool;
14
/* get the repos-local name */
15
get_repos_propname(db, name, &propname);
20
+ /* A subpool to cope with mod_dav making multiple calls, e.g. during
21
+ PROPPATCH with multiple values. */
22
+ subpool = svn_pool_create(db->resource->pool);
23
if (db->resource->baselined)
25
if (db->resource->working)
27
serr = svn_repos_fs_change_txn_prop(resource->info->root.txn,
41
/* Prepare any hook failure message to get sent over the wire */
44
dav_svn__operational_log(resource->info,
45
svn_log__change_rev_prop(
46
resource->info->root.rev,
47
- propname, resource->pool));
48
+ propname, subpool));
51
else if (resource->info->restype == DAV_SVN_RESTYPE_TXN_COLLECTION)
53
serr = svn_repos_fs_change_txn_prop(resource->info->root.txn,
54
- propname, value, resource->pool);
55
+ propname, value, subpool);
59
serr = svn_repos_fs_change_node_prop(resource->info->root.root,
60
get_repos_path(resource->info),
61
- propname, value, resource->pool);
62
+ propname, value, subpool);
64
+ svn_pool_destroy(subpool);
67
return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
72
+ apr_pool_t *subpool;
74
/* get the repos-local name */
75
get_repos_propname(db, name, &propname);
80
+ /* A subpool to cope with mod_dav making multiple calls, e.g. during
81
+ PROPPATCH with multiple values. */
82
+ subpool = svn_pool_create(db->resource->pool);
84
/* Working Baseline or Working (Version) Resource */
85
if (db->resource->baselined)
86
if (db->resource->working)
87
serr = svn_repos_fs_change_txn_prop(db->resource->info->root.txn,
88
- propname, NULL, db->resource->pool);
89
+ propname, NULL, subpool);
91
/* ### VIOLATING deltaV: you can't proppatch a baseline, it's
92
not a working resource! But this is how we currently
94
propname, NULL, NULL, TRUE, TRUE,
97
- db->resource->pool);
100
serr = svn_repos_fs_change_node_prop(db->resource->info->root.root,
101
get_repos_path(db->resource->info),
102
- propname, NULL, db->resource->pool);
103
+ propname, NULL, subpool);
104
+ svn_pool_destroy(subpool);
106
return dav_svn__convert_err(serr, HTTP_INTERNAL_SERVER_ERROR,
107
"could not remove a property",