Use symbolic constant for maximum directory depth
authorJacob Bachmeyer <jcb@gnu.org>
Sun, 16 Oct 2022 01:02:16 +0000 (20:02 -0500)
committerJacob Bachmeyer <jcb@gnu.org>
Sun, 16 Oct 2022 01:02:16 +0000 (20:02 -0500)
gatekeeper.pl

index 16ccac99e64795d0b7525d9fafcc9682981cd7d9..837dfe03bbad37447f3b7d57c9fb0684f2a67e25 100755 (executable)
@@ -468,6 +468,9 @@ use constant MAX_FILE_NAME_LEN => 100;
 use constant MAX_DIRECTIVE_SIZE => 50*1024;    # 50 KiB
 use constant MAX_SIGNATURE_SIZE => 50*1024;    # 50 KiB
 
+# limit on the number of subdirectories allowed
+use constant MAX_DIRECTORY_DEPTH => 4;
+
 #
 # -- Configuration sanity check
 #
@@ -1110,7 +1113,7 @@ sub parse_directory_line {
   # A couple of subdir levels are ok, but don't allow hundreds.
   my $slash_count = ($val =~ tr,/,/,);
   fatal("$slash_count slashes is too many, in $val",1,$directive_file_contents)
-    if ($slash_count > 3 and not $do_not_fail);
+    if ($slash_count > (MAX_DIRECTORY_DEPTH-1) and not $do_not_fail);
 
   # Only let them specify one directory directive.
   fatal("Only one directory directive is allowed per directive file. "