From e95bbaeefe9d0664b5229fcb43b90bd4ff9088f1 Mon Sep 17 00:00:00 2001
From: srosse <none@none>
Date: Thu, 9 Apr 2015 09:09:32 +0200
Subject: [PATCH] no-jira: catch number format exception

---
 .../document/file/WordOOXMLDocument.java      | 29 ++++++++++++++-----
 1 file changed, 21 insertions(+), 8 deletions(-)

diff --git a/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java b/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java
index 4e82911f5b7..310580c26d0 100644
--- a/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java
+++ b/src/main/java/org/olat/search/service/document/file/WordOOXMLDocument.java
@@ -29,6 +29,7 @@ import org.olat.core.gui.util.CSSHelper;
 import org.olat.core.logging.OLog;
 import org.olat.core.logging.Tracing;
 import org.olat.core.util.FileUtils;
+import org.olat.core.util.StringHelper;
 import org.olat.core.util.io.ShieldInputStream;
 import org.olat.core.util.vfs.VFSLeaf;
 import org.olat.search.service.SearchResourceContext;
@@ -87,16 +88,28 @@ public class WordOOXMLDocument extends FileDocument {
 					doc.setContent(0, dh.getContent());
 				} else if(name.startsWith(HEADER) && name.endsWith(".xml")) {
 					String position = name.substring(HEADER.length(), name.indexOf(".xml"));
-					
-					OfficeDocumentHandler dh = new OfficeDocumentHandler();
-					parse(new ShieldInputStream(zip), dh);
-					doc.setHeader(Integer.parseInt(position), dh.getContent());
+					if(StringHelper.isLong(position)) {
+						try {
+							OfficeDocumentHandler dh = new OfficeDocumentHandler();
+							parse(new ShieldInputStream(zip), dh);
+							doc.setHeader(Integer.parseInt(position), dh.getContent());
+						} catch (NumberFormatException e) {
+							log.warn("", e);
+							//if position not a position, go head
+						}
+					}
 				} else if(name.startsWith(FOOTER) && name.endsWith(".xml")) {
 					String position = name.substring(FOOTER.length(), name.indexOf(".xml"));
-					
-					OfficeDocumentHandler dh = new OfficeDocumentHandler();
-					parse(new ShieldInputStream(zip), dh);
-					doc.setFooter(Integer.parseInt(position), dh.getContent());
+					if(StringHelper.isLong(position)) {
+						try {
+							OfficeDocumentHandler dh = new OfficeDocumentHandler();
+							parse(new ShieldInputStream(zip), dh);
+							doc.setFooter(Integer.parseInt(position), dh.getContent());
+						} catch (NumberFormatException e) {
+							log.warn("", e);
+							//if position not a position, go head
+						}
+					}
 				}
 				entry = zip.getNextEntry();
 			}
-- 
GitLab