Don't return broken matches when requested unsigned
Change-Id: I29cddd0e4efa783d6ca06eed3e2b8ecc69f2f9f9
diff --git a/Changes b/Changes
index d5fc72b..31298c5 100644
--- a/Changes
+++ b/Changes
@@ -1,6 +1,7 @@
-0.64.0 2025-03-28
+0.64.0 2025-04-30
- [feature] Support signed matchids to prevent consecutive
positional requests (diewald)
+ - [feature] Add support for krill.index.textSize.max (kupietz)
0.63.3 2024-12-15
- [performance] Improve short circuit on count=0 and
diff --git a/src/main/java/de/ids_mannheim/korap/response/Match.java b/src/main/java/de/ids_mannheim/korap/response/Match.java
index 0c18d7c..d1e95f5 100644
--- a/src/main/java/de/ids_mannheim/korap/response/Match.java
+++ b/src/main/java/de/ids_mannheim/korap/response/Match.java
@@ -208,6 +208,9 @@
public Match (int maxTokenMatchSize, String idString, boolean includeHighlights) {
MatchIdentifier id = new MatchIdentifier(idString);
+ if (id.getTextSigle() == "" && id.getDocID() == "")
+ return;
+
if (id.getStartPos() > -1) {
this.mirrorIdentifier = id.toString();
diff --git a/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java b/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
index e94f13a..104aefb 100644
--- a/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
+++ b/src/main/java/de/ids_mannheim/korap/response/match/MatchIdentifier.java
@@ -105,6 +105,7 @@
// No signature returned
if (hmacStr == null) {
this.textSigle = "";
+ this.docID = "";
return;
};
@@ -115,6 +116,7 @@
if (!MessageDigest.isEqual(hmacBytes, hmacVerify)) {
this.textSigle = "";
+ this.docID = "";
return;
};
};
diff --git a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
index 57d8177..d7a9009 100644
--- a/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
+++ b/src/test/java/de/ids_mannheim/korap/index/TestMatchIdentifier.java
@@ -387,6 +387,37 @@
km.getSnippetHTML());
};
+ @Test
+ public void indexExampleSign () throws IOException, QueryException {
+
+ MatchIdentifier.initMac("tree");
+
+
+ KrillIndex ki = new KrillIndex();
+ ki.addDoc(createSimpleFieldDoc());
+ ki.commit();
+
+ Match km = ki.getMatchInfo("match-c1!d1-p7-9(4)8-8(2)7-8", "tokens",
+ null, null, false, false);
+
+ JsonNode res = mapper.readTree(km.toJsonString());
+ assertEquals("Invalid match identifier", res.at("/errors/0/1").asText());
+ assertEquals("", res.at("/matchID").asText());
+ assertEquals("", res.at("/fields/0/key").asText());
+
+
+ km = ki.getMatchInfo("match-c1!d1-p7-9(2)7-8(1)8-8x_07WRwmjA5EigwG8wYcURhnz_WkL9cepvU96hC2mp6SE", "tokens",
+ null, null, false, false);
+
+ res = mapper.readTree(km.toJsonString());
+ assertEquals("", res.at("/errors/0/1").asText());
+ assertEquals("match-c1!d1-p7-9(2)7-8(1)8-8x_07WRwmjA5EigwG8wYcURhnz_WkL9cepvU96hC2mp6SE", res.at("/matchID").asText());
+ assertEquals("ID", res.at("/fields/0/key").asText());
+
+ MatchIdentifier.initMac("");
+ };
+
+
@Test
public void indexNewStructure () throws IOException, QueryException {