mirror of
https://github.com/openssl/openssl.git
synced 2025-01-18 13:44:20 +08:00
Make OpenSSL::Test::run() sensitive to signals
$? in perl gets the status value from wait(2), which is a word with the exit code in the upper half and the number of a raised signal in the lower half. OpenSSL::Test::run() ignored the signal half up until now. With this change, we recalculate an exit code the same way the Unix shells do, using this formula: ($? & 0x7f) ? ($? & 0x7f)|0x80 : ($? >> 8); Reviewed-by: Rich Salz <rsalz@openssl.org> Reviewed-by: Emilia Käsper <emilia@openssl.org>
This commit is contained in:
parent
71cdcfc606
commit
2ef157afb9
@ -324,12 +324,17 @@ sub run {
|
||||
my @r = ();
|
||||
my $r = 0;
|
||||
my $e = 0;
|
||||
|
||||
# The dance we do with $? is the same dance the Unix shells appear to
|
||||
# do. For example, a program that gets aborted (and therefore signals
|
||||
# SIGABRT = 6) will appear to exit with the code 134. We mimic this
|
||||
# to make it easier to compare with a manual run of the command.
|
||||
if ($opts{capture}) {
|
||||
@r = `$prefix$cmd`;
|
||||
$e = $? >> 8;
|
||||
$e = ($? & 0x7f) ? ($? & 0x7f)|0x80 : ($? >> 8);
|
||||
} else {
|
||||
system("$prefix$cmd");
|
||||
$e = $? >> 8;
|
||||
$e = ($? & 0x7f) ? ($? & 0x7f)|0x80 : ($? >> 8);
|
||||
$r = $hooks{exit_checker}->($e);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user