From 96fdaea58fe3c61014df16289fdbcb35592958e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=A9=20van=20Geldorp?= Date: Sun, 19 Jan 2003 01:06:09 +0000 Subject: [PATCH] Fix truncation to 0 bytes svn path=/trunk/; revision=4040 --- reactos/drivers/fs/vfat/finfo.c | 36 ++++++++++++++++++--------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/reactos/drivers/fs/vfat/finfo.c b/reactos/drivers/fs/vfat/finfo.c index 0270376144f..9c474ee353a 100644 --- a/reactos/drivers/fs/vfat/finfo.c +++ b/reactos/drivers/fs/vfat/finfo.c @@ -1,4 +1,4 @@ -/* $Id: finfo.c,v 1.24 2003/01/11 16:00:16 hbirr Exp $ +/* $Id: finfo.c,v 1.25 2003/01/19 01:06:09 gvg Exp $ * * COPYRIGHT: See COPYING in the top level directory * PROJECT: ReactOS kernel @@ -472,25 +472,29 @@ VfatSetAllocationSizeInformation(PFILE_OBJECT FileObject, } } } - else if (NewSize <= Fcb->RFCB.AllocationSize.u.LowPart - ClusterSize) + else if (NewSize + ClusterSize <= Fcb->RFCB.AllocationSize.u.LowPart) { - if (NewSize > 0) - { - Status = OffsetToCluster(DeviceExt, Fcb, Cluster, + if (NewSize > 0) + { + Status = OffsetToCluster(DeviceExt, Fcb, Cluster, ROUND_DOWN(NewSize - 1, ClusterSize), &Cluster, FALSE); - } - NCluster = Cluster; - Status = NextCluster (DeviceExt, Fcb, Cluster, &NCluster, FALSE); - WriteCluster(DeviceExt, Cluster, 0xffffffff); - Cluster = NCluster; - while (Cluster != 0xffffffff) - { - NextCluster (DeviceExt, Fcb, Cluster, &NCluster, FALSE); - WriteCluster (DeviceExt, Cluster, 0); - Cluster = NCluster; - } + NCluster = Cluster; + Status = NextCluster (DeviceExt, Fcb, Cluster, &NCluster, FALSE); + WriteCluster(DeviceExt, Cluster, 0xffffffff); + Cluster = NCluster; + } + else + { + Cluster = FirstCluster; + } + while (0xffffffff != Cluster && 0 != Cluster) + { + NextCluster (DeviceExt, Fcb, Cluster, &NCluster, FALSE); + WriteCluster (DeviceExt, Cluster, 0); + Cluster = NCluster; + } } if (!vfatFCBIsDirectory(Fcb)) {