summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJan Kotas <jkotas@microsoft.com>2018-03-13 17:00:50 -0700
committerGitHub <noreply@github.com>2018-03-13 17:00:50 -0700
commite7ff0e4bf1265d5bfc3357f89c56d3815a714e0c (patch)
tree63e34683d8580fe2032b7888440c2c449d33c9ba /src
parent1f48b29ed0c9da48ca2d30df2a308fb620d8c22f (diff)
downloadcoreclr-e7ff0e4bf1265d5bfc3357f89c56d3815a714e0c.tar.gz
coreclr-e7ff0e4bf1265d5bfc3357f89c56d3815a714e0c.tar.bz2
coreclr-e7ff0e4bf1265d5bfc3357f89c56d3815a714e0c.zip
Revert "Revert "Fix handling of incorrect assemblies on Unix (#16747)" (#16790)" (#16917)
This reverts commit 47bef69b68a35eafa069d08187727684a5f47901.
Diffstat (limited to 'src')
-rw-r--r--src/debug/daccess/nidump.cpp2
-rw-r--r--src/inc/pedecoder.h2
-rw-r--r--src/inc/pedecoder.inl2
-rw-r--r--src/utilcode/pedecoder.cpp3
-rw-r--r--src/vm/peimage.cpp7
5 files changed, 9 insertions, 7 deletions
diff --git a/src/debug/daccess/nidump.cpp b/src/debug/daccess/nidump.cpp
index 45320dca7f..e948687c0e 100644
--- a/src/debug/daccess/nidump.cpp
+++ b/src/debug/daccess/nidump.cpp
@@ -720,7 +720,7 @@ NativeImageDumper::DumpNativeImage()
for (COUNT_T i = 0; i < m_decoder.GetNumberOfSections(); i++)
{
- PTR_IMAGE_SECTION_HEADER section = dptr_add(m_decoder.FindFirstSection(), i);
+ PTR_IMAGE_SECTION_HEADER section = m_decoder.FindFirstSection() + i;
m_display->Section(reinterpret_cast<char *>(section->Name),
section->VirtualAddress,
section->SizeOfRawData);
diff --git a/src/inc/pedecoder.h b/src/inc/pedecoder.h
index 01375e6d88..8163ffff35 100644
--- a/src/inc/pedecoder.h
+++ b/src/inc/pedecoder.h
@@ -182,7 +182,7 @@ class PEDecoder
UINT32 GetWin32VersionValue() const;
COUNT_T GetNumberOfRvaAndSizes() const;
COUNT_T GetNumberOfSections() const;
- IMAGE_SECTION_HEADER *FindFirstSection() const;
+ PTR_IMAGE_SECTION_HEADER FindFirstSection() const;
IMAGE_SECTION_HEADER *FindSection(LPCSTR sectionName) const;
DWORD GetImageIdentity() const;
diff --git a/src/inc/pedecoder.inl b/src/inc/pedecoder.inl
index 7f3c79ba59..c8400af46a 100644
--- a/src/inc/pedecoder.inl
+++ b/src/inc/pedecoder.inl
@@ -1178,7 +1178,7 @@ inline DWORD PEDecoder::GetImageIdentity() const
}
-inline IMAGE_SECTION_HEADER *PEDecoder::FindFirstSection() const
+inline PTR_IMAGE_SECTION_HEADER PEDecoder::FindFirstSection() const
{
CONTRACT(IMAGE_SECTION_HEADER *)
{
diff --git a/src/utilcode/pedecoder.cpp b/src/utilcode/pedecoder.cpp
index ddd65d390d..e5e8ddce67 100644
--- a/src/utilcode/pedecoder.cpp
+++ b/src/utilcode/pedecoder.cpp
@@ -445,6 +445,7 @@ BOOL PEDecoder::HasWriteableSections() const
CONTRACT_CHECK
{
INSTANCE_CHECK;
+ PRECONDITION(CheckNTHeaders());
PRECONDITION(CheckFormat());
NOTHROW;
GC_NOTRIGGER;
@@ -453,7 +454,7 @@ BOOL PEDecoder::HasWriteableSections() const
}
CONTRACT_CHECK_END;
- PTR_IMAGE_SECTION_HEADER pSection = FindFirstSection(FindNTHeaders());
+ PTR_IMAGE_SECTION_HEADER pSection = FindFirstSection();
_ASSERTE(pSection != NULL);
PTR_IMAGE_SECTION_HEADER pSectionEnd = pSection + VAL16(FindNTHeaders()->FileHeader.NumberOfSections);
diff --git a/src/vm/peimage.cpp b/src/vm/peimage.cpp
index 3536b08361..83989f0e4d 100644
--- a/src/vm/peimage.cpp
+++ b/src/vm/peimage.cpp
@@ -1029,7 +1029,9 @@ PTR_PEImageLayout PEImage::CreateLayoutFlat(BOOL bPermitWriteableSections)
PTR_PEImageLayout pFlatLayout = PEImageLayout::LoadFlat(GetFileHandle(),this);
- if (!bPermitWriteableSections && pFlatLayout->HasWriteableSections())
+ if (!bPermitWriteableSections
+ && pFlatLayout->CheckNTHeaders()
+ && pFlatLayout->HasWriteableSections())
{
pFlatLayout->Release();
@@ -1114,8 +1116,7 @@ void PEImage::Load()
#ifdef PLATFORM_UNIX
if (m_pLayouts[IMAGE_FLAT] != NULL
- && m_pLayouts[IMAGE_FLAT]->CheckFormat()
- && m_pLayouts[IMAGE_FLAT]->IsILOnly()
+ && m_pLayouts[IMAGE_FLAT]->CheckILOnlyFormat()
&& !m_pLayouts[IMAGE_FLAT]->HasWriteableSections())
{
// IL-only images with writeable sections are mapped in general way,