Use File::Spec::Unix to count directories in parse_directory_line
authorJacob Bachmeyer <jcb@gnu.org>
Sun, 16 Oct 2022 01:07:24 +0000 (20:07 -0500)
committerJacob Bachmeyer <jcb@gnu.org>
Sun, 16 Oct 2022 01:07:24 +0000 (20:07 -0500)
gatekeeper.pl
testsuite/lib/gatekeeper.exp

index 837dfe03bbad37447f3b7d57c9fb0684f2a67e25..5e2d2e05d9d953b0f8b3a9d9820ec76cdfd36831 100755 (executable)
@@ -1110,10 +1110,12 @@ sub parse_directory_line {
             1,$directive_file_contents);
   my $val = $1;  # so far so good
 
+  my @dirs = File::Spec::Unix->splitdir($1);
+  my $dir_depth = scalar @dirs;
+
   # 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 > (MAX_DIRECTORY_DEPTH-1) and not $do_not_fail);
+  fatal("$dir_depth levels is too deep, in $val",1,$directive_file_contents)
+    if ($dir_depth > MAX_DIRECTORY_DEPTH and not $do_not_fail);
 
   # Only let them specify one directory directive.
   fatal("Only one directory directive is allowed per directive file. "
index e84d263472aaee7c3879e0aed930e854c9009290..236b1e4c4b195fbd2c22d647d6d503b47f377681 100644 (file)
@@ -627,7 +627,7 @@ proc analyze_log { base_dir name assess } {
                     exp_continue
                 }
        -re {^gatekeeper\[[0-9]+\]: \(Test\)\
-                ([0-9]+) slashes is too many, in [^\r\n]+} {
+                ([0-9]+) levels is too deep, in [^\r\n]+} {
                     # from parse_directory_line, when the directory is too deep
                     set A(validate,bad-directory-depth) 1
                     set A(validate,bad-directory-depth,$expect_out(1,string)) 1