From 9788200234dfe222989823c6160d2be40fd84415 Mon Sep 17 00:00:00 2001 From: James Moger Date: Tue, 11 Jun 2013 15:50:13 -0400 Subject: [PATCH] Improve NPE handling for hook script enumeration (issue-253) --- releases.moxie | 1 + src/main/java/com/gitblit/GitBlit.java | 8 ++++++-- src/main/java/com/gitblit/git/ReceiveHook.java | 9 +++++++-- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/releases.moxie b/releases.moxie index d5c04ae2..197013ac 100644 --- a/releases.moxie +++ b/releases.moxie @@ -28,6 +28,7 @@ r17: { - Ensure Redmine url is properly formatted (issue 223) - Use standard ServletRequestWrapper instead of custom wrapper (issue 224) - Switch commit message back to a pre and ensure that it is properly escaped when combined with commit message regex substitution (issue 242) + - Improve NPE handling for hook script enumeration (issue-253) changes: - Improved error logging for servlet containers which provide a null contextFolder (issue 199) diff --git a/src/main/java/com/gitblit/GitBlit.java b/src/main/java/com/gitblit/GitBlit.java index df17edd9..c538acea 100644 --- a/src/main/java/com/gitblit/GitBlit.java +++ b/src/main/java/com/gitblit/GitBlit.java @@ -3009,7 +3009,9 @@ public class GitBlit implements ServletContextListener { if (repository != null) { for (String teamname : userService.getTeamnamesForRepositoryRole(repository.name)) { TeamModel team = userService.getTeamModel(teamname); - scripts.addAll(team.preReceiveScripts); + if (!ArrayUtils.isEmpty(team.preReceiveScripts)) { + scripts.addAll(team.preReceiveScripts); + } } } return new ArrayList(scripts); @@ -3059,7 +3061,9 @@ public class GitBlit implements ServletContextListener { if (repository != null) { for (String teamname : userService.getTeamnamesForRepositoryRole(repository.name)) { TeamModel team = userService.getTeamModel(teamname); - scripts.addAll(team.postReceiveScripts); + if (!ArrayUtils.isEmpty(team.postReceiveScripts)) { + scripts.addAll(team.postReceiveScripts); + } } } return new ArrayList(scripts); diff --git a/src/main/java/com/gitblit/git/ReceiveHook.java b/src/main/java/com/gitblit/git/ReceiveHook.java index a961f5a6..3e00b381 100644 --- a/src/main/java/com/gitblit/git/ReceiveHook.java +++ b/src/main/java/com/gitblit/git/ReceiveHook.java @@ -42,6 +42,7 @@ import com.gitblit.Keys; import com.gitblit.client.Translation; import com.gitblit.models.RepositoryModel; import com.gitblit.models.UserModel; +import com.gitblit.utils.ArrayUtils; import com.gitblit.utils.ClientLogger; import com.gitblit.utils.JGitUtils; import com.gitblit.utils.PushLogUtils; @@ -170,7 +171,9 @@ public class ReceiveHook implements PreReceiveHook, PostReceiveHook { Set scripts = new LinkedHashSet(); scripts.addAll(GitBlit.self().getPreReceiveScriptsInherited(repository)); - scripts.addAll(repository.preReceiveScripts); + if (!ArrayUtils.isEmpty(repository.preReceiveScripts)) { + scripts.addAll(repository.preReceiveScripts); + } runGroovy(repository, user, commands, rp, scripts); for (ReceiveCommand cmd : commands) { if (!Result.NOT_ATTEMPTED.equals(cmd.getResult())) { @@ -262,7 +265,9 @@ public class ReceiveHook implements PreReceiveHook, PostReceiveHook { // run Groovy hook scripts Set scripts = new LinkedHashSet(); scripts.addAll(GitBlit.self().getPostReceiveScriptsInherited(repository)); - scripts.addAll(repository.postReceiveScripts); + if (!ArrayUtils.isEmpty(repository.postReceiveScripts)) { + scripts.addAll(repository.postReceiveScripts); + } runGroovy(repository, user, commands, rp, scripts); } -- 2.39.5