MCPcopy Create free account
hub / github.com/bobranten/Ext4Fsd / Ext2TruncateSymlink

Function Ext2TruncateSymlink

Ext4Fsd/fsctl.c:1748–1777  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1746}
1747
1748NTSTATUS
1749Ext2TruncateSymlink(
1750 PEXT2_IRP_CONTEXT IrpContext,
1751 PEXT2_VCB Vcb,
1752 PEXT2_MCB Mcb,
1753 ULONG Size
1754 )
1755{
1756 NTSTATUS status = STATUS_SUCCESS;
1757 PUCHAR data = (PUCHAR)&Mcb->Inode.i_block;
1758 ULONG len = (ULONG)Mcb->Inode.i_size;
1759 LARGE_INTEGER NewSize;
1760
1761 if (len < EXT2_LINKLEN_IN_INODE && !Mcb->Inode.i_blocks) {
1762
1763 RtlZeroMemory(data + Size, EXT2_LINKLEN_IN_INODE - Size);
1764 Mcb->Inode.i_size = Size;
1765 Ext2SaveInode(IrpContext, Vcb, &Mcb->Inode);
1766
1767 } else {
1768 NewSize.QuadPart = Size;
1769 status = Ext2TruncateFile(IrpContext, Vcb, Mcb, &NewSize);
1770 if (!NT_SUCCESS(status)) {
1771 goto out;
1772 }
1773 }
1774
1775out:
1776 return status;
1777}
1778
1779
1780/* FIXME: We can only handle one reparse point right now. */

Callers 1

Ext2DeleteReparsePointFunction · 0.85

Calls 2

Ext2SaveInodeFunction · 0.85
Ext2TruncateFileFunction · 0.85

Tested by

no test coverage detected