6dc89b
6dc89b
https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2014-8108
6dc89b
6dc89b
http://subversion.apache.org/security/CVE-2014-8108-advisory.txt
6dc89b
6dc89b
--- subversion-1.7.14/subversion/mod_dav_svn/repos.c.cve8108
6dc89b
+++ subversion-1.7.14/subversion/mod_dav_svn/repos.c
6dc89b
@@ -506,6 +506,9 @@ parse_vtxnstub_uri(dav_resource_combined
6dc89b
   if (parse_txnstub_uri(comb, path, label, use_checked_in))
6dc89b
     return TRUE;
6dc89b
 
6dc89b
+  if (!comb->priv.root.txn_name)
6dc89b
+    return TRUE;
6dc89b
+
6dc89b
   comb->priv.root.vtxn_name = comb->priv.root.txn_name;
6dc89b
   comb->priv.root.txn_name = dav_svn__get_txn(comb->priv.repos,
6dc89b
                                               comb->priv.root.vtxn_name);
6dc89b
@@ -574,6 +577,9 @@ parse_vtxnroot_uri(dav_resource_combined
6dc89b
   if (parse_txnroot_uri(comb, path, label, use_checked_in))
6dc89b
     return TRUE;
6dc89b
 
6dc89b
+  if (!comb->priv.root.txn_name)
6dc89b
+    return TRUE;
6dc89b
+
6dc89b
   comb->priv.root.vtxn_name = comb->priv.root.txn_name;
6dc89b
   comb->priv.root.txn_name = dav_svn__get_txn(comb->priv.repos,
6dc89b
                                               comb->priv.root.vtxn_name);
6dc89b
@@ -919,6 +925,10 @@ prep_working(dav_resource_combined *comb
6dc89b
      point. */
6dc89b
   if (txn_name == NULL)
6dc89b
     {
6dc89b
+      if (!comb->priv.root.activity_id)
6dc89b
+        return dav_svn__new_error(comb->res.pool, HTTP_BAD_REQUEST, 0,
6dc89b
+                                  "The request did not specify an activity ID");
6dc89b
+
6dc89b
       txn_name = dav_svn__get_txn(comb->priv.repos,
6dc89b
                                   comb->priv.root.activity_id);
6dc89b
       if (txn_name == NULL)
6dc89b
@@ -1029,8 +1039,13 @@ prep_working(dav_resource_combined *comb
6dc89b
 static dav_error *
6dc89b
 prep_activity(dav_resource_combined *comb)
6dc89b
 {
6dc89b
-  const char *txn_name = dav_svn__get_txn(comb->priv.repos,
6dc89b
-                                          comb->priv.root.activity_id);
6dc89b
+  const char *txn_name;
6dc89b
+
6dc89b
+  if (!comb->priv.root.activity_id)
6dc89b
+    return dav_svn__new_error(comb->res.pool, HTTP_BAD_REQUEST, 0,
6dc89b
+                              "The request did not specify an activity ID");
6dc89b
+
6dc89b
+  txn_name = dav_svn__get_txn(comb->priv.repos, comb->priv.root.activity_id);
6dc89b
 
6dc89b
   comb->priv.root.txn_name = txn_name;
6dc89b
   comb->res.exists = txn_name != NULL;