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

