diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/shred.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/shred.c b/src/shred.c index 732d3afb1..ed370513d 100644 --- a/src/shred.c +++ b/src/shred.c @@ -428,7 +428,7 @@ dopass (int fd, struct stat const *st, char const *qname, off_t *sizep, size_t soff; /* Offset into buffer for next write */ ssize_t ssize; /* Return value from write */ - /* Do nothing for --size=0 or regular empty files with --exact. */ + /* Do nothing for --size=0 or regular empty files. */ if (size == 0) return 0; @@ -887,15 +887,15 @@ do_wipefd (int fd, char const *qname, struct randint_source *s, if (! flags->exact) { - /* Round up to the nearest blocksize. If the file is - empty output a block anyway, in case the file system - stores small files in the inode. */ + /* Round up to the nearest blocksize to clear slack space. */ off_t remainder = size % ST_BLKSIZE (st); - if (remainder != 0 || size == 0) + if (remainder != 0) { off_t size_incr = ST_BLKSIZE (st) - remainder; if (! INT_ADD_OVERFLOW (size, size_incr)) size += size_incr; + else + size = OFF_T_MAX; } } } |