If the source supplied fewer bytes than its declared size, the truncated file was stored and the upload reported success with the object claiming the declared size. Count the bytes actually read from the source and if they do not match the declared size, remove the truncated file and return an error. This was found by the new TestRcatSizeShortEOF integration test.