aboutsummaryrefslogtreecommitdiff
path: root/toolsrc
diff options
context:
space:
mode:
authorAlexander Karatarakis <alkarata@microsoft.com>2016-11-15 16:54:55 -0800
committerAlexander Karatarakis <alkarata@microsoft.com>2016-11-15 16:54:55 -0800
commit059ffcc92ccff746184670cd4ac4817f279cc50d (patch)
treeba5c67d9ffc95ce42a1233b7d60434faa9dc4f54 /toolsrc
parent7811ef602ecd963ae333e3427c82629d1c8e9f34 (diff)
parenta882cfe14f28979e453e92786b1a3ff82a28904b (diff)
downloadvcpkg-059ffcc92ccff746184670cd4ac4817f279cc50d.tar.gz
vcpkg-059ffcc92ccff746184670cd4ac4817f279cc50d.zip
Merge branch 'GeertVL-master'
Diffstat (limited to 'toolsrc')
-rw-r--r--toolsrc/src/coff_file_reader.cpp22
1 files changed, 14 insertions, 8 deletions
diff --git a/toolsrc/src/coff_file_reader.cpp b/toolsrc/src/coff_file_reader.cpp
index f46150979..0b14abcc8 100644
--- a/toolsrc/src/coff_file_reader.cpp
+++ b/toolsrc/src/coff_file_reader.cpp
@@ -8,7 +8,7 @@
using namespace std;
-namespace vcpkg {namespace COFFFileReader
+namespace vcpkg { namespace COFFFileReader
{
template <class T>
static T reinterpret_bytes(const char* data)
@@ -36,7 +36,7 @@ namespace vcpkg {namespace COFFFileReader
static void verify_equal_strings(const char* expected, const char* actual, int size, const char* label)
{
- Checks::check_exit(memcmp(expected, actual, size) == 0, "Incorrect string (%s) found. Expected: %s but found %s", label, expected, actual);
+ Checks::check_exit(memcmp(expected, actual, size) == 0, "Incorrect string (%s) found. Expected: (%s) but found (%s)", label, expected, actual);
}
static void read_and_verify_PE_signature(fstream& fs)
@@ -113,8 +113,11 @@ namespace vcpkg {namespace COFFFileReader
ret.data.resize(HEADER_SIZE);
fs.read(&ret.data[0], HEADER_SIZE);
- const std::string header_end = ret.data.substr(HEADER_END_OFFSET, HEADER_END_SIZE);
- verify_equal_strings(HEADER_END, header_end.c_str(), HEADER_END_SIZE, "LIB HEADER_END");
+ if (ret.data[0] != '\0')
+ {
+ const std::string header_end = ret.data.substr(HEADER_END_OFFSET, HEADER_END_SIZE);
+ verify_equal_strings(HEADER_END, header_end.c_str(), HEADER_END_SIZE, "LIB HEADER_END");
+ }
return ret;
}
@@ -251,10 +254,13 @@ namespace vcpkg {namespace COFFFileReader
for (uint32_t i = 0; i < archive_member_count; i++)
{
const archive_member_header header = archive_member_header::read(fs);
- const uint16_t first_two_bytes = peek_value_from_stream<uint16_t>(fs);
- const bool isImportHeader = getMachineType(first_two_bytes) == MachineType::UNKNOWN;
- const MachineType machine = isImportHeader ? import_header::peek(fs).machineType() : coff_file_header::peek(fs).machineType();
- machine_types.insert(machine);
+ if (header.data[0] != '\0')
+ {
+ const uint16_t first_two_bytes = peek_value_from_stream<uint16_t>(fs);
+ const bool isImportHeader = getMachineType(first_two_bytes) == MachineType::UNKNOWN;
+ const MachineType machine = isImportHeader ? import_header::peek(fs).machineType() : coff_file_header::peek(fs).machineType();
+ machine_types.insert(machine);
+ }
skip_archive_member(fs, header.member_size());
}