Fixed potential file system corruption when truncating or overwriting file data with fault tolerant mode enabled (#78)

* _fx_fault_tolerant_cleanup_FAT_chain(): Add checks to prevent starting a new cluster deletion session in some corner cases where the end of the chain is reached.

* Fixed formatting of previous commit.
This commit is contained in:
Jonathan Blanchard
2026-02-10 09:31:41 -05:00
committed by GitHub
parent 0462b027a1
commit dfe5084ab8
@@ -207,7 +207,7 @@ ULONG last_FAT_sector;
/* At this point, the head_cluster points to the cluster chain that is to be removed. */
/* Tail cluster points to the back of the origianal FAT chain where the new chain is attached to.
/* Tail cluster points to the back of the original FAT chain where the new chain is attached to.
The remove process terminates once this cluster is encountered. */
tail_cluster = _fx_utility_32_unsigned_read((UCHAR *)&FAT_chain -> fx_fault_tolerant_FAT_chain_insertion_back);
@@ -262,7 +262,11 @@ ULONG last_FAT_sector;
{
if (head_cluster == next_session || next_session == FX_FREE_CLUSTER)
{
next_session = next_cluster;
/* Do not start another session if this is the end of the chain. */
if (next_cluster != tail_cluster)
{
next_session = next_cluster;
}
}
break;
}
@@ -277,7 +281,11 @@ ULONG last_FAT_sector;
/* Get next session. */
if (cache_count == cache_max)
{
next_session = next_cluster;
/* Do not start another session if this is the end of the chain. */
if (next_cluster != tail_cluster)
{
next_session = next_cluster;
}
}
/* Update head cluster and next session into log file. */