List:Commits« Previous MessageNext Message »
From:Magnus Svensson Date:January 21 2009 5:18pm
Subject:bzr commit into mysql-5.1 branch (msvensson:2716) Bug#35735
View as plain text  
#At file:///home/msvensson/mysql/5.1-rpl/ based on revid:msvensson@stripped

 2716 Magnus Svensson	2009-01-21
      Bug#35735 mysql-test-run.pl creates tmpdir for socket path longer than 70
       - Additional patch with improved protection by putting it all inside an "eval"
       - Calling 'hostpath' on a truncated socket may also croak.
       - Remove the need to create any directory parts of "path" inside the function.
modified:
  mysql-test/lib/My/Platform.pm

=== modified file 'mysql-test/lib/My/Platform.pm'
--- a/mysql-test/lib/My/Platform.pm	2008-10-08 20:43:37 +0000
+++ b/mysql-test/lib/My/Platform.pm	2009-01-21 17:18:03 +0000
@@ -100,47 +100,43 @@ sub posix_path {
   return $path;
 }
 
+use File::Temp qw /tempdir/;
 
 sub check_socket_path_length {
   my ($path)= @_;
-  my $truncated= 0;
 
   return 0 if IS_WINDOWS;
 
   require IO::Socket::UNIX;
 
+  my $truncated= 1; # Be negative
+
+  # Create a tempfile name with same length as "path"
+  my $tmpdir = tempdir( CLEANUP => 0);
+  my $len = length($path) - length($tmpdir);
+  my $testfile = $tmpdir . "x" x ($len  > 0 ? $len : 1);
   my $sock;
   eval {
-    # Create the directories where the
-    # socket till be created
-    mkpath(dirname($path));
-
     $sock= new IO::Socket::UNIX
       (
-       Local => $path,
+       Local => $testfile,
        Listen => 1,
       );
 
+    die "Could not create UNIX domain socket: $!"
+      unless defined $sock;
+
+    die "UNIX domain socket patch was truncated"
+      unless ($testfile eq $sock->hostpath());
+
+    $truncated= 0; # Yes, it worked!
+
   };
-  if ($@)
-  {
-    print $@, '\n';
-    return 2;
-  }
-  if (!defined $sock){
-    #print "Could not create UNIX domain socket: $!\n";
-    return 3;
-  }
-  if ($path ne $sock->hostpath()){
-    # Path was truncated
-    $truncated= 1;
-    # Output diagnostic messages
-    print "path: '$path', length: ", length($path) ,"\n";
-    print "hostpath: '", $sock->hostpath(),
-	  "', length: ", length($sock->hostpath()), "\n";
-  }
-  $sock= undef; # Close socket
-  unlink($path); # Remove the physical file
+  #print "check_socket_path_length, failed: ", $@, '\n' if ($@);
+
+  $sock= undef;  # Close socket
+  unlink($testfile); # Remove the physical file
+  rmdir($tmpdir); # Remove the tempdir
   return $truncated;
 }
 

Thread
bzr commit into mysql-5.1 branch (msvensson:2716) Bug#35735Magnus Svensson21 Jan