Esempio n. 1
0
        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));
            }
        }
Esempio n. 2
0
        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);
            }
        }