diff options
-rw-r--r-- | ext2fs/truncate.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/ext2fs/truncate.c b/ext2fs/truncate.c index 6d35fd20..44aab3c7 100644 --- a/ext2fs/truncate.c +++ b/ext2fs/truncate.c @@ -296,6 +296,19 @@ diskfs_truncate (struct node *node, off_t length) is true for fast symlinks, and also apparently for some device nodes in linux. */ { + off_t froblen = node->dn_stat.st_size; + off_t frobmax = sizeof(diskfs_node_disknode (node)->info.i_data); + + if (froblen > frobmax) + { + ext2_warning ("inline data was %lld, more than max %lld", + (long long) froblen, (long long) frobmax); + froblen = frobmax; + } + froblen -= length; + memset (((char *) (diskfs_node_disknode (node)->info.i_data)) + length, + 0, froblen); + node->dn_stat.st_size = length; node->dn_set_mtime = 1; node->dn_set_ctime = 1; |