From 3f8a1b72ec1de315ad470f490ce0ddd5eb0d390c Mon Sep 17 00:00:00 2001 From: Luca Milanesio Date: Wed, 25 Jul 2018 08:43:53 -0700 Subject: [PATCH] StalenessChecker: URLDecode project name before checking staleness When change is retrieved from the Lucene index, the project name is URLEncoded and needs to be decoded before checking if the refs are stale or not. Failing to decode the project name would result in an infinite loop trying to check for project staleness. Bug: Issue 9482 Change-Id: I422d3ecde1fa12d38ed508bed6982aef71c2330e --- .../google/gerrit/server/index/change/StalenessChecker.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/index/change/StalenessChecker.java b/gerrit-server/src/main/java/com/google/gerrit/server/index/change/StalenessChecker.java index 0c43c85973..54787c65ca 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/index/change/StalenessChecker.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/index/change/StalenessChecker.java @@ -28,6 +28,7 @@ import com.google.common.collect.MultimapBuilder; import com.google.common.collect.SetMultimap; import com.google.common.collect.Sets; import com.google.gerrit.common.Nullable; +import com.google.gerrit.extensions.restapi.Url; import com.google.gerrit.reviewdb.client.Change; import com.google.gerrit.reviewdb.client.Project; import com.google.gerrit.reviewdb.server.ReviewDb; @@ -181,7 +182,8 @@ public class StalenessChecker { String s = new String(b, UTF_8); List parts = Splitter.on(':').splitToList(s); RefStatePattern.check(parts.size() == 2, s); - result.put(new Project.NameKey(parts.get(0)), RefStatePattern.create(parts.get(1))); + result.put( + new Project.NameKey(Url.decode(parts.get(0))), RefStatePattern.create(parts.get(1))); } return result; }