You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@subversion.apache.org by iv...@apache.org on 2015/11/28 14:47:14 UTC
svn commit: r1716973 -
/subversion/trunk/subversion/libsvn_fs_fs/transaction.c
Author: ivan
Date: Sat Nov 28 13:47:14 2015
New Revision: 1716973
URL: http://svn.apache.org/viewvc?rev=1716973&view=rev
Log:
Add detection of some very unlikely itemidx corruption in FSFS transaction.
* subversion/libsvn_fs_fs/transaction.c
(allocate_item_index): Check that we hit EOF when reading itemidx file.
Modified:
subversion/trunk/subversion/libsvn_fs_fs/transaction.c
Modified: subversion/trunk/subversion/libsvn_fs_fs/transaction.c
URL: http://svn.apache.org/viewvc/subversion/trunk/subversion/libsvn_fs_fs/transaction.c?rev=1716973&r1=1716972&r2=1716973&view=diff
==============================================================================
--- subversion/trunk/subversion/libsvn_fs_fs/transaction.c (original)
+++ subversion/trunk/subversion/libsvn_fs_fs/transaction.c Sat Nov 28 13:47:14 2015
@@ -1789,7 +1789,13 @@ allocate_item_index(apr_uint64_t *item_i
APR_OS_DEFAULT, pool));
SVN_ERR(svn_io_file_read_full2(file, buffer, sizeof(buffer)-1,
&bytes_read, &eof, pool));
- if (bytes_read)
+
+ /* Item index file should be shorter than SVN_INT64_BUFFER_SIZE,
+ otherwise we truncate data. */
+ if (!eof)
+ return svn_error_create(SVN_ERR_FS_CORRUPT, NULL,
+ _("Unexpected itemidx file length"));
+ else if (bytes_read)
SVN_ERR(svn_cstring_atoui64(item_index, buffer));
else
*item_index = SVN_FS_FS__ITEM_INDEX_FIRST_USER;