public void CodeView_Errors() { var bytes = ImmutableArray.Create(new byte[] { (byte)'R', (byte)'S', (byte)'D', (byte)'S', // signature 0x6E, 0xE6, 0x88, 0x3C, 0xB9, 0xE0, 0x08, 0x45, 0x92, 0x90, 0x11, 0xE0, 0xDB, 0x51, 0xA1, 0xC5, // GUID 0x01, 0x00, 0x00, 0x00, // age (byte)'x', 0x00, // path }); using (var block = new ByteArrayMemoryProvider(bytes).GetMemoryBlock(0, 1)) { Assert.Throws <BadImageFormatException>(() => PEReader.DecodeCodeViewDebugDirectoryData(block)); } using (var block = new ByteArrayMemoryProvider(bytes).GetMemoryBlock(0, 4)) { Assert.Throws <BadImageFormatException>(() => PEReader.DecodeCodeViewDebugDirectoryData(block)); } using (var block = new ByteArrayMemoryProvider(bytes).GetMemoryBlock(0, bytes.Length - 3)) { Assert.Throws <BadImageFormatException>(() => PEReader.DecodeCodeViewDebugDirectoryData(block)); } }
public void CodeView_PathPadding() { var bytes = ImmutableArray.Create(new byte[] { (byte)'R', (byte)'S', (byte)'D', (byte)'S', // signature 0x6E, 0xE6, 0x88, 0x3C, 0xB9, 0xE0, 0x08, 0x45, 0x92, 0x90, 0x11, 0xE0, 0xDB, 0x51, 0xA1, 0xC5, // GUID 0x01, 0x00, 0x00, 0x00, // age (byte)'x', 0x00, 0x20, 0xff, // path }); using (var block = new ByteArrayMemoryProvider(bytes).GetMemoryBlock(0, bytes.Length)) { Assert.Equal("x", PEReader.DecodeCodeViewDebugDirectoryData(block).Path); } using (var block = new ByteArrayMemoryProvider(bytes).GetMemoryBlock(0, bytes.Length - 1)) { Assert.Equal("x", PEReader.DecodeCodeViewDebugDirectoryData(block).Path); } using (var block = new ByteArrayMemoryProvider(bytes).GetMemoryBlock(0, bytes.Length - 2)) { Assert.Equal("x", PEReader.DecodeCodeViewDebugDirectoryData(block).Path); } using (var block = new ByteArrayMemoryProvider(bytes).GetMemoryBlock(0, bytes.Length - 3)) { Assert.Equal("x", PEReader.DecodeCodeViewDebugDirectoryData(block).Path); } using (var block = new ByteArrayMemoryProvider(bytes).GetMemoryBlock(0, bytes.Length - 4)) { Assert.Equal("", PEReader.DecodeCodeViewDebugDirectoryData(block).Path); } }