From 026ba9850f93b45d164fcf69a58727e2bcdd2580 Mon Sep 17 00:00:00 2001 From: "Kyle J. McKay" Date: Sat, 15 Aug 2020 14:44:26 -0700 Subject: [PATCH] cloning: enforce $Girocco::Config::max_clone_objects When cloning a new project, enforce the new $Girocco::Config::max_clone_objects limit. Additionally, if the clone ends up failing because the limit was exceeded, immediately remove all files in the objects subdirectory hierarchy, include an "objects exceeded" blurb in the failure message and always cc the configured admin address in such a case regardless of the admincc setting. Signed-off-by: Kyle J. McKay --- taskd/clone.sh | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/taskd/clone.sh b/taskd/clone.sh index 69509f3..2989a64 100755 --- a/taskd/clone.sh +++ b/taskd/clone.sh @@ -84,6 +84,7 @@ clear_all_objects_and_packs() { } exit_err=0 +exit_objs=0 send_clone_failed() { trap "" EXIT # We must now close the .clonelog file that is open on stdout and stderr @@ -113,12 +114,20 @@ send_clone_failed() { The source repository${reposize:+ ($reposize)} exceeds our maximum allowed repository size." clear_all_objects_and_packs fi + xobjs_err="" + if [ "${exit_objs:-0}" != "0" ]; then + ccadm=1 + xobjs_err=" + +The source repository${exit_objs:+ ($exit_objs objects)} exceeds our maximum allowed object limit." + clear_all_objects_and_packs + fi [ "$ccadm" = "0" ] || [ -z "$cfg_admin" ] || if [ -z "$failaddrs" ]; then failaddrs="$cfg_admin"; else failaddrs="$failaddrs,$cfg_admin"; fi [ -z "$failaddrs" ] || { cat <