From 01e19381c1667bf55a23055694b3954d3885052a Mon Sep 17 00:00:00 2001 From: Zlatin Balevsky Date: Fri, 5 Aug 2022 00:05:53 +0100 Subject: [PATCH] verify links on creation --- .../com/muwire/gui/MainFrameController.groovy | 2 -- .../groovy/com/muwire/gui/mulinks/MuLink.groovy | 13 +++++++++---- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy index 56ca9a69..e50705fa 100644 --- a/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy +++ b/gui/griffon-app/controllers/com/muwire/gui/MainFrameController.groovy @@ -95,8 +95,6 @@ class MainFrameController { if(search.startsWith("muwire://")) { try { MuLink link = MuLink.parse(search) - if(!link.verify()) - throw new InvalidMuLinkException("failed verification") if (link.getLinkType() == MuLink.LinkType.FILE) downloadLink((FileMuLink)link) else if (link.getLinkType() == MuLink.LinkType.COLLECTION) diff --git a/gui/src/main/groovy/com/muwire/gui/mulinks/MuLink.groovy b/gui/src/main/groovy/com/muwire/gui/mulinks/MuLink.groovy index 240a2cb4..f9dbe39a 100644 --- a/gui/src/main/groovy/com/muwire/gui/mulinks/MuLink.groovy +++ b/gui/src/main/groovy/com/muwire/gui/mulinks/MuLink.groovy @@ -37,7 +37,7 @@ abstract class MuLink { } - boolean verify() { + private boolean verify() { ByteArrayOutputStream baos = new ByteArrayOutputStream() baos.write(infoHash.getRoot()) @@ -110,12 +110,17 @@ abstract class MuLink { if (sigBytes.length != Constants.SIG_TYPE.getSigLen()) throw new InvalidMuLinkException("invalid sig key") + MuLink rv if (linkType == LinkType.FILE) - return new FileMuLink(p, ih, n, sigBytes, query) + rv = new FileMuLink(p, ih, n, sigBytes, query) else if (linkType == LinkType.COLLECTION) - return new CollectionMuLink(p, ih, n, sigBytes, query) + rv = new CollectionMuLink(p, ih, n, sigBytes, query) + else + throw new InvalidMuLinkException("unknown type $linkType") - throw new InvalidMuLinkException("unknown type $linkType") + if (!rv.verify()) + throw new InvalidMuLinkException("failed verification") + return rv } catch (InvalidMuLinkException e) { throw e } catch (Exception e) {