From e279500d76f1944ba26526f085030909a2c7ef49 Mon Sep 17 00:00:00 2001 From: Igor Pavlov Date: Sun, 20 Jun 2010 00:00:00 +0000 Subject: 9.15 --- CPP/7zip/Archive/Wim/WimIn.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'CPP/7zip/Archive/Wim/WimIn.cpp') diff --git a/CPP/7zip/Archive/Wim/WimIn.cpp b/CPP/7zip/Archive/Wim/WimIn.cpp index b65b4c44..4ea028af 100755 --- a/CPP/7zip/Archive/Wim/WimIn.cpp +++ b/CPP/7zip/Archive/Wim/WimIn.cpp @@ -384,7 +384,12 @@ HRESULT CDatabase::ParseDirItem(size_t pos, int parent) return S_FALSE; UInt32 fileNameLen = Get16(p + 0x24); - if ((fileNameLen & 1) != 0 || ((0x26 + fileNameLen + 6) & ~7) != len) + if ((fileNameLen & 1) != 0) + return S_FALSE; + /* Probably different versions of ImageX can use different number of + additional ZEROs. So we don't use exact check. */ + UInt32 fileNameLen2 = (fileNameLen == 0 ? fileNameLen : fileNameLen + 2); + if (((0x26 + fileNameLen2 + 6) & ~7) > len) return S_FALSE; UString name; -- cgit v1.2.3