From 0179706213212cd35f43365ad912558ebe0e84b0 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 11 Jun 2013 17:25:45 +0000 Subject: [PATCH] Port r183666 to identify_magic. It will be tested in the next commit which moves another user to identify_magic. Original message: Fix an out of bounds array access. We were looking at Magic[5] without checking Length. Since this path would not return unless Length >= 18 anyway, just move the >= 18 check up. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@183753 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Support/PathV2.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/Support/PathV2.cpp b/lib/Support/PathV2.cpp index 1546e0781dd..9533e78eada 100644 --- a/lib/Support/PathV2.cpp +++ b/lib/Support/PathV2.cpp @@ -788,11 +788,12 @@ error_code has_magic(const Twine &path, const Twine &magic, bool &result) { break; case '\177': - if (Magic[1] == 'E' && Magic[2] == 'L' && Magic[3] == 'F') { + if (Magic.size() >= 18 && Magic[1] == 'E' && Magic[2] == 'L' && + Magic[3] == 'F') { bool Data2MSB = Magic[5] == 2; unsigned high = Data2MSB ? 16 : 17; unsigned low = Data2MSB ? 17 : 16; - if (Magic.size() >= 18 && Magic[high] == 0) + if (Magic[high] == 0) switch (Magic[low]) { default: break; case 1: return file_magic::elf_relocatable; -- 2.34.1