get_rev_contents() has signed integer overflow with "long int" rev and behaves unpredictably. --- subversion-1.12.2/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c.fsfspacktest +++ subversion-1.12.2/subversion/tests/libsvn_fs_fs/fs-fs-pack-test.c @@ -59,7 +59,8 @@ get_rev_contents(svn_revnum_t rev, apr_pool_t *pool) { /* Toss in a bunch of magic numbers for spice. */ - apr_int64_t num = ((rev * 1234353 + 4358) * 4583 + ((rev % 4) << 1)) / 42; + apr_int64_t rev64 = rev; + apr_int64_t num = ((rev64 * 1234353 + 4358) * 4583 + ((rev64 % 4) << 1)) / 42; return apr_psprintf(pool, "%" APR_INT64_T_FMT "\n", num); } @@ -407,7 +408,8 @@ if (! svn_stringbuf_compare(rstring, sb)) return svn_error_createf(SVN_ERR_FS_GENERAL, NULL, - "Bad data in revision %ld.", i); + "Bad data in revision %ld - [%s] not [%s].", + i, rstring->data, sb->data); } return SVN_NO_ERROR;