[openssl-commits] [openssl] OpenSSL_1_1_0-stable update

Matt Caswell matt at openssl.org
Fri May 26 18:15:23 UTC 2017


The branch OpenSSL_1_1_0-stable has been updated
       via  523ea2721581cf9eaa20036327b53b36ba2135ba (commit)
      from  ef66b8cb5efbc2dfbc2dc64f35a34c023b96e4c1 (commit)


- Log -----------------------------------------------------------------
commit 523ea2721581cf9eaa20036327b53b36ba2135ba
Author: Matt Caswell <matt at openssl.org>
Date:   Fri May 26 13:06:08 2017 +0100

    Fix a Proxy race condition
    
    Issue #3562 describes a problem where a race condition can occur in the
    Proxy such that a test "ok" line can appear in the middle of other text
    causing the test harness to miss it. The issue is that we do not wait for
    the client process to finish after the test is complete, so that process may
    continue to write data to stdout/stderr at the same time that the test
    harness does.
    
    This commit fixes TLSProxy so that we always wait for the client process to
    finish before continuing.
    
    Fixes #3562
    
    Reviewed-by: Richard Levitte <levitte at openssl.org>
    (Merged from https://github.com/openssl/openssl/pull/3567)
    (cherry picked from commit b72668a0d3586ee2560f0536c43e18991a4cfc6f)

-----------------------------------------------------------------------

Summary of changes:
 util/TLSProxy/Proxy.pm | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/util/TLSProxy/Proxy.pm b/util/TLSProxy/Proxy.pm
index bdb2cd8..141cf53 100644
--- a/util/TLSProxy/Proxy.pm
+++ b/util/TLSProxy/Proxy.pm
@@ -42,6 +42,7 @@ sub new
         clientflags => "",
         serverconnects => 1,
         serverpid => 0,
+        clientpid => 0,
         reneg => 0,
 
         #Public read
@@ -104,6 +105,7 @@ sub clearClient
     $self->{record_list} = [];
     $self->{message_list} = [];
     $self->{clientflags} = "";
+    $self->{clientpid} = 0;
 
     TLSProxy::Message->clear();
     TLSProxy::Record->clear();
@@ -225,6 +227,7 @@ sub clientstart
             }
             exec($execcmd);
         }
+        $self->clientpid($pid);
     }
 
     # Wait for incoming connection from client
@@ -315,6 +318,10 @@ sub clientstart
         waitpid( $self->serverpid, 0);
         die "exit code $? from server process\n" if $? != 0;
     }
+    die "clientpid is zero\n" if $self->clientpid == 0;
+    print "Waiting for client process to close: ".$self->clientpid."\n";
+    waitpid($self->clientpid, 0);
+
     return 1;
 }
 
@@ -508,6 +515,14 @@ sub serverpid
     }
     return $self->{serverpid};
 }
+sub clientpid
+{
+    my $self = shift;
+    if (@_) {
+        $self->{clientpid} = shift;
+    }
+    return $self->{clientpid};
+}
 
 sub fill_known_data
 {


More information about the openssl-commits mailing list