6712ef
6712ef
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-0032
6712ef
6712ef
http://svn.apache.org/viewvc?view=revision&revision=1558692
6712ef
6712ef
--- subversion-1.7.14/subversion/mod_dav_svn/repos.c.cve0032
6712ef
+++ subversion-1.7.14/subversion/mod_dav_svn/repos.c
6712ef
@@ -1959,6 +1959,25 @@ get_resource(request_rec *r,
6712ef
      of private resource, iff the SVNListParentPath directive is 'on'. */
6712ef
   if (dav_svn__is_parentpath_list(r))
6712ef
     {
6712ef
+      /* Only allow GET and HEAD on the parentpath resource
6712ef
+       * httpd uses the same method_number for HEAD as GET */
6712ef
+      if (r->method_number != M_GET)
6712ef
+        {
6712ef
+          int status;
6712ef
+
6712ef
+          /* Marshall the error back to the client by generating by
6712ef
+           * way of the dav_svn__error_response_tag trick. */
6712ef
+          err = dav_svn__new_error(r->pool, HTTP_METHOD_NOT_ALLOWED,
6712ef
+                                   SVN_ERR_APMOD_MALFORMED_URI,
6712ef
+                                   "The URI does not contain the name "
6712ef
+                                   "of a repository.");
6712ef
+          /* can't use r->allowed since the default handler isn't called */
6712ef
+          apr_table_setn(r->headers_out, "Allow", "GET,HEAD");
6712ef
+          status = dav_svn__error_response_tag(r, err);
6712ef
+
6712ef
+          return dav_push_error(r->pool, status, err->error_id, NULL, err);
6712ef
+        }
6712ef
+
6712ef
       err = get_parentpath_resource(r, resource);
6712ef
       if (err)
6712ef
         return err;