Mercurial > dovecot > core-2.2
changeset 18857:bd1dabfcfae3
fs-metawrap: If written file unexpectedly shrinks, return error instead of assert-crash.
This shouldn't be happening, but we can't fully control it so an error is
better.
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Mon, 15 Jun 2015 14:51:46 +0300 |
parents | db8877fdd39f |
children | 8bde19f080ad |
files | src/lib-fs/fs-metawrap.c |
diffstat | 1 files changed, 8 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/lib-fs/fs-metawrap.c Mon Jun 15 14:49:46 2015 +0300 +++ b/src/lib-fs/fs-metawrap.c Mon Jun 15 14:51:46 2015 +0300 @@ -457,7 +457,14 @@ /* fs_stat() after a write. we can do this quickly. */ if (fs_stat(file->super, st_r) < 0) return -1; - i_assert((uoff_t)st_r->st_size >= file->metadata_write_size); + if ((uoff_t)st_r->st_size < file->metadata_write_size) { + fs_set_error(_file->fs, + "Just-written %s shrank unexpectedly " + "(%"PRIuUOFF_T" < %"PRIuUOFF_T")", + fs_file_path(_file), st_r->st_size, + file->metadata_write_size); + return -1; + } st_r->st_size -= file->metadata_write_size; return 0; }