From 34b08077dd8d3e93f617c3c52f3da62f3055dbcb Mon Sep 17 00:00:00 2001 From: ghidra1 Date: Wed, 4 Oct 2023 12:12:45 -0400 Subject: [PATCH] GP-0 corrected GhidraURL related test failures --- .../protocol/ghidra/GhidraProtocolConnector.java | 8 ++++++-- ...efaultLocalGhidraProtocolConnectorParseTest.java | 13 ++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/Ghidra/Framework/Project/src/main/java/ghidra/framework/protocol/ghidra/GhidraProtocolConnector.java b/Ghidra/Framework/Project/src/main/java/ghidra/framework/protocol/ghidra/GhidraProtocolConnector.java index 0d048988fb..f21d006560 100644 --- a/Ghidra/Framework/Project/src/main/java/ghidra/framework/protocol/ghidra/GhidraProtocolConnector.java +++ b/Ghidra/Framework/Project/src/main/java/ghidra/framework/protocol/ghidra/GhidraProtocolConnector.java @@ -56,7 +56,7 @@ public abstract class GhidraProtocolConnector { checkProtocol(); checkUserInfo(); checkHostInfo(); - this.repositoryName = GhidraURL.isServerRepositoryURL(url) ? parseRepositoryName() : null; + this.repositoryName = parseRepositoryName(); this.itemPath = parseItemPath(); } @@ -185,6 +185,9 @@ public abstract class GhidraProtocolConnector { String path = url.getPath(); if (repositoryName == null) { + if (!StringUtils.isEmpty(path) && !"/".equals(path)) { + throw new MalformedURLException(); + } return null; // presumed server-only URL } @@ -206,7 +209,8 @@ public abstract class GhidraProtocolConnector { } /** - * Gets the repository name associated with the URL. + * Gets the repository name associated with the URL. If a local URL is used this will + * correspond to the project name. * @return the repository name or null if URL does not identify a specific repository */ public String getRepositoryName() { diff --git a/Ghidra/Test/IntegrationTest/src/test/java/ghidra/framework/protocol/ghidra/DefaultLocalGhidraProtocolConnectorParseTest.java b/Ghidra/Test/IntegrationTest/src/test/java/ghidra/framework/protocol/ghidra/DefaultLocalGhidraProtocolConnectorParseTest.java index f9442e70a2..e5d8ed1c38 100644 --- a/Ghidra/Test/IntegrationTest/src/test/java/ghidra/framework/protocol/ghidra/DefaultLocalGhidraProtocolConnectorParseTest.java +++ b/Ghidra/Test/IntegrationTest/src/test/java/ghidra/framework/protocol/ghidra/DefaultLocalGhidraProtocolConnectorParseTest.java @@ -35,38 +35,37 @@ public class DefaultLocalGhidraProtocolConnectorParseTest extends AbstractGeneri DefaultLocalGhidraProtocolConnector pp = new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/C:/x/y/proj")); - assertNull(pp.getRepositoryName()); + assertEquals("proj", pp.getRepositoryName()); assertEquals("/", pp.getFolderPath()); assertNull(pp.getFolderItemName()); assertEquals("/", getInstanceField("itemPath", pp)); pp = new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj")); - assertNull(pp.getRepositoryName()); + assertEquals("proj", pp.getRepositoryName()); assertEquals("/", pp.getFolderPath()); assertNull(pp.getFolderItemName()); assertEquals("/", getInstanceField("itemPath", pp)); pp = new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj?/")); - assertNull(pp.getRepositoryName()); + assertEquals("proj", pp.getRepositoryName()); assertEquals("/", pp.getFolderPath()); assertNull(pp.getFolderItemName()); assertEquals("/", getInstanceField("itemPath", pp)); pp = new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj?/a")); - assertNull(pp.getRepositoryName()); + assertEquals("proj", pp.getRepositoryName()); assertEquals("/", pp.getFolderPath()); assertEquals("a", pp.getFolderItemName()); assertEquals("/a", getInstanceField("itemPath", pp)); pp = new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj?/a/b#ref")); - assertNull(pp.getRepositoryName()); + assertEquals("proj", pp.getRepositoryName()); assertEquals("/a", pp.getFolderPath()); assertEquals("b", pp.getFolderItemName()); assertEquals("/a/b", getInstanceField("itemPath", pp)); try { - pp = - new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj?//")); + pp = new DefaultLocalGhidraProtocolConnector(new URL("ghidra:/x/y/proj?//")); fail(); } catch (MalformedURLException e) {