You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by st...@apache.org on 2012/11/05 13:40:49 UTC

svn commit: r1405772 - in /subversion/trunk/subversion: include/svn_error_codes.h libsvn_subr/named_atomic.c

Author: stefan2
Date: Mon Nov  5 12:40:49 2012
New Revision: 1405772

URL: http://svn.apache.org/viewvc?rev=1405772&view=rev
Log:
Instead of trying to sanitize externally corrupted data, simply error
out as soon as we detect a corruption like that.

* subversion/include/svn_error_codes.h
  (SVN_ERR_CORRUPTED_ATOMIC_STORAGE): new error code
* subversion/libsvn_subr/named_atomic.c
  (svn_atomic_namespace__create): bail out whenever we detect a corruption

Modified:
    subversion/trunk/subversion/include/svn_error_codes.h
    subversion/trunk/subversion/libsvn_subr/named_atomic.c

Modified: subversion/trunk/subversion/include/svn_error_codes.h
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/include/svn_error_codes.h?rev=1405772&r1=1405771&r2=1405772&view=diff
==============================================================================
--- subversion/trunk/subversion/include/svn_error_codes.h (original)
+++ subversion/trunk/subversion/include/svn_error_codes.h Mon Nov  5 12:40:49 2012
@@ -1425,6 +1425,11 @@ SVN_ERROR_START
              SVN_ERR_MISC_CATEGORY_START + 37,
              "failed to parse version number string")
 
+  /** @since New in 1.8. */
+  SVN_ERRDEF(SVN_ERR_CORRUPTED_ATOMIC_STORAGE,
+             SVN_ERR_MISC_CATEGORY_START + 38,
+             "Atomic data storage is corrupt")
+
   /* command-line client errors */
 
   SVN_ERRDEF(SVN_ERR_CL_ARG_PARSING_ERROR,

Modified: subversion/trunk/subversion/libsvn_subr/named_atomic.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_subr/named_atomic.c?rev=1405772&r1=1405771&r2=1405772&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_subr/named_atomic.c (original)
+++ subversion/trunk/subversion/libsvn_subr/named_atomic.c Mon Nov  5 12:40:49 2012
@@ -462,10 +462,12 @@ svn_atomic_namespace__create(svn_atomic_
 
   if (!err && new_ns->data)
     {
-      /* Sanitize (in case of data corruption)
+      /* Detect severe cases of corruption (i.e. when some outsider messed
+       * with our data file)
        */
       if (new_ns->data->count > MAX_ATOMIC_COUNT)
-        new_ns->data->count = MAX_ATOMIC_COUNT;
+        return svn_error_create(SVN_ERR_CORRUPTED_ATOMIC_STORAGE, 0,
+                       _("Number of atomics in namespace is too large."));
 
       /* Cache the number of existing, complete entries.  There can't be
        * incomplete ones from other processes because we hold the mutex.