From 4dd2ff6c7c38c2cd0e7e5b4929ad1cc162acd8bb Mon Sep 17 00:00:00 2001 From: Javen O'Neal Date: Sat, 2 Jul 2016 05:11:01 +0000 Subject: [PATCH] findbugs REC_CATCH_EXCEPTION: catch specific exception types and include more helpful reason rather than catching all Exceptions with one misleading reason git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1751023 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/poifs/crypt/dsig/SignatureInfo.java | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java b/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java index c2fb8be2c..4eb8e4951 100644 --- a/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java +++ b/src/ooxml/java/org/apache/poi/poifs/crypt/dsig/SignatureInfo.java @@ -47,6 +47,7 @@ import javax.xml.crypto.dsig.dom.DOMValidateContext; import javax.xml.crypto.dsig.spec.C14NMethodParameterSpec; import javax.xml.xpath.XPath; import javax.xml.xpath.XPathConstants; +import javax.xml.xpath.XPathExpressionException; import javax.xml.xpath.XPathFactory; import java.io.ByteArrayOutputStream; import java.io.File; @@ -97,6 +98,7 @@ import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.w3c.dom.events.EventListener; import org.w3c.dom.events.EventTarget; +import org.xml.sax.SAXException; /** @@ -261,8 +263,24 @@ public class SignatureInfo implements SignatureConfigurable { } return valid; - } catch (Exception e) { - String s = "error in marshalling and validating the signature"; + } catch (IOException e) { + String s = "error in reading document"; + LOG.log(POILogger.ERROR, s, e); + throw new EncryptedDocumentException(s, e); + } catch (SAXException e) { + String s = "error in parsing document"; + LOG.log(POILogger.ERROR, s, e); + throw new EncryptedDocumentException(s, e); + } catch (XPathExpressionException e) { + String s = "error in searching document with xpath expression"; + LOG.log(POILogger.ERROR, s, e); + throw new EncryptedDocumentException(s, e); + } catch (MarshalException e) { + String s = "error in unmarshalling the signature"; + LOG.log(POILogger.ERROR, s, e); + throw new EncryptedDocumentException(s, e); + } catch (XMLSignatureException e) { + String s = "error in validating the signature"; LOG.log(POILogger.ERROR, s, e); throw new EncryptedDocumentException(s, e); }