38 lines
1.3 KiB
Diff
38 lines
1.3 KiB
Diff
From b537d67f758a349b26afb15c1fba4aaa472a2186 Mon Sep 17 00:00:00 2001
|
|
From: tanyulong <tanyulong@kylinos.cn>
|
|
Date: Fri, 29 Oct 2021 14:44:36 +0800
|
|
Subject: [PATCH] fix Index crash when meet encrypt doc files
|
|
|
|
---
|
|
libsearch/parser/binary-parser.cpp | 7 +++++++
|
|
1 file changed, 7 insertions(+)
|
|
|
|
diff --git a/libsearch/parser/binary-parser.cpp b/libsearch/parser/binary-parser.cpp
|
|
index 59e9ef4..e45ca67 100644
|
|
--- a/libsearch/parser/binary-parser.cpp
|
|
+++ b/libsearch/parser/binary-parser.cpp
|
|
@@ -4874,6 +4874,7 @@ bool KBinaryParser::read8DocText(FILE *pFile, const ppsInfoType *pPPS,
|
|
const ULONG *aulBlockDepot;
|
|
ULONG ulTextOffset, ulBeginTextInfo;
|
|
ULONG ulTotLength, ulLen;
|
|
+ ULONG ulEncryptInfo;
|
|
long lIndex, lPieces, lOff;
|
|
size_t tTextInfoLen, tBlockDepotLen, tBlockSize;
|
|
int iType, iLen;
|
|
@@ -4883,6 +4884,12 @@ bool KBinaryParser::read8DocText(FILE *pFile, const ppsInfoType *pPPS,
|
|
ulBeginTextInfo = ulGetLong(0x1a2, aucHeader); /* fcClx */
|
|
tTextInfoLen = (size_t)ulGetLong(0x1a6, aucHeader); /* lcbClx */
|
|
|
|
+ ulEncryptInfo = ulGetLong(0x0a, aucHeader);
|
|
+ if(ulEncryptInfo & 0x0100) {
|
|
+ qDebug() << "Encrypt file:" << m_strFileName << (size_t)ulEncryptInfo;
|
|
+ return false;
|
|
+ }
|
|
+
|
|
if(pPPS->tTable.ulSize == 0)
|
|
return false;
|
|
|
|
--
|
|
2.30.0
|
|
|