From a8f30f516a7f28f5ff9362130f58c8fc8f18b6f9 Mon Sep 17 00:00:00 2001 From: Jack Worman Date: Mon, 15 Aug 2022 09:10:28 -0500 Subject: [PATCH] Throw exception instead of triggering error, and added base exception interface --- phpseclib/Exception/BadConfigurationException.php | 2 +- phpseclib/Exception/BadDecryptionException.php | 2 +- phpseclib/Exception/BadModeException.php | 2 +- phpseclib/Exception/ConnectionClosedException.php | 2 +- phpseclib/Exception/ExceptionInterface.php | 12 ++++++++++++ phpseclib/Exception/FileNotFoundException.php | 2 +- phpseclib/Exception/InconsistentSetupException.php | 2 +- phpseclib/Exception/InsufficientSetupException.php | 2 +- phpseclib/Exception/NoKeyLoadedException.php | 2 +- .../Exception/NoSupportedAlgorithmsException.php | 2 +- phpseclib/Exception/RuntimeException.php | 9 +++++++++ phpseclib/Exception/UnableToConnectException.php | 2 +- .../Exception/UnsupportedAlgorithmException.php | 2 +- phpseclib/Exception/UnsupportedCurveException.php | 2 +- phpseclib/Exception/UnsupportedFormatException.php | 2 +- .../Exception/UnsupportedOperationException.php | 2 +- phpseclib/Net/SSH2.php | 7 ++++--- 17 files changed, 39 insertions(+), 17 deletions(-) create mode 100644 phpseclib/Exception/ExceptionInterface.php create mode 100644 phpseclib/Exception/RuntimeException.php diff --git a/phpseclib/Exception/BadConfigurationException.php b/phpseclib/Exception/BadConfigurationException.php index 3de7fb77..55972c8c 100644 --- a/phpseclib/Exception/BadConfigurationException.php +++ b/phpseclib/Exception/BadConfigurationException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class BadConfigurationException extends \RuntimeException +class BadConfigurationException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/BadDecryptionException.php b/phpseclib/Exception/BadDecryptionException.php index 87976c3a..6a36691c 100644 --- a/phpseclib/Exception/BadDecryptionException.php +++ b/phpseclib/Exception/BadDecryptionException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class BadDecryptionException extends \RuntimeException +class BadDecryptionException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/BadModeException.php b/phpseclib/Exception/BadModeException.php index 60e1b5e7..22e64459 100644 --- a/phpseclib/Exception/BadModeException.php +++ b/phpseclib/Exception/BadModeException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class BadModeException extends \RuntimeException +class BadModeException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/ConnectionClosedException.php b/phpseclib/Exception/ConnectionClosedException.php index 275c4731..1f700114 100644 --- a/phpseclib/Exception/ConnectionClosedException.php +++ b/phpseclib/Exception/ConnectionClosedException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class ConnectionClosedException extends \RuntimeException +class ConnectionClosedException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/ExceptionInterface.php b/phpseclib/Exception/ExceptionInterface.php new file mode 100644 index 00000000..7784cec3 --- /dev/null +++ b/phpseclib/Exception/ExceptionInterface.php @@ -0,0 +1,12 @@ + */ -class FileNotFoundException extends \RuntimeException +class FileNotFoundException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/InconsistentSetupException.php b/phpseclib/Exception/InconsistentSetupException.php index 7630a729..886a9ba8 100644 --- a/phpseclib/Exception/InconsistentSetupException.php +++ b/phpseclib/Exception/InconsistentSetupException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class InconsistentSetupException extends \RuntimeException +class InconsistentSetupException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/InsufficientSetupException.php b/phpseclib/Exception/InsufficientSetupException.php index f0fe8cd4..f1f13be3 100644 --- a/phpseclib/Exception/InsufficientSetupException.php +++ b/phpseclib/Exception/InsufficientSetupException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class InsufficientSetupException extends \RuntimeException +class InsufficientSetupException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/NoKeyLoadedException.php b/phpseclib/Exception/NoKeyLoadedException.php index 0724a2b0..c2c1b62a 100644 --- a/phpseclib/Exception/NoKeyLoadedException.php +++ b/phpseclib/Exception/NoKeyLoadedException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class NoKeyLoadedException extends \RuntimeException +class NoKeyLoadedException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/NoSupportedAlgorithmsException.php b/phpseclib/Exception/NoSupportedAlgorithmsException.php index 9f5e71c1..e1e2ef99 100644 --- a/phpseclib/Exception/NoSupportedAlgorithmsException.php +++ b/phpseclib/Exception/NoSupportedAlgorithmsException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class NoSupportedAlgorithmsException extends \RuntimeException +class NoSupportedAlgorithmsException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/RuntimeException.php b/phpseclib/Exception/RuntimeException.php new file mode 100644 index 00000000..6915803b --- /dev/null +++ b/phpseclib/Exception/RuntimeException.php @@ -0,0 +1,9 @@ + */ -class UnableToConnectException extends \RuntimeException +class UnableToConnectException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/UnsupportedAlgorithmException.php b/phpseclib/Exception/UnsupportedAlgorithmException.php index d42dad24..d18b7171 100644 --- a/phpseclib/Exception/UnsupportedAlgorithmException.php +++ b/phpseclib/Exception/UnsupportedAlgorithmException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class UnsupportedAlgorithmException extends \RuntimeException +class UnsupportedAlgorithmException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/UnsupportedCurveException.php b/phpseclib/Exception/UnsupportedCurveException.php index 7d83e375..3a2e5f53 100644 --- a/phpseclib/Exception/UnsupportedCurveException.php +++ b/phpseclib/Exception/UnsupportedCurveException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class UnsupportedCurveException extends \RuntimeException +class UnsupportedCurveException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/UnsupportedFormatException.php b/phpseclib/Exception/UnsupportedFormatException.php index ecb1f013..f1b6c19b 100644 --- a/phpseclib/Exception/UnsupportedFormatException.php +++ b/phpseclib/Exception/UnsupportedFormatException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class UnsupportedFormatException extends \RuntimeException +class UnsupportedFormatException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Exception/UnsupportedOperationException.php b/phpseclib/Exception/UnsupportedOperationException.php index ab8a26f3..f0dc0185 100644 --- a/phpseclib/Exception/UnsupportedOperationException.php +++ b/phpseclib/Exception/UnsupportedOperationException.php @@ -20,6 +20,6 @@ namespace phpseclib3\Exception; * * @author Jim Wigginton */ -class UnsupportedOperationException extends \RuntimeException +class UnsupportedOperationException extends \RuntimeException implements ExceptionInterface { } diff --git a/phpseclib/Net/SSH2.php b/phpseclib/Net/SSH2.php index 09dab2e8..ae94124f 100644 --- a/phpseclib/Net/SSH2.php +++ b/phpseclib/Net/SSH2.php @@ -67,6 +67,7 @@ use phpseclib3\Crypt\Twofish; use phpseclib3\Exception\ConnectionClosedException; use phpseclib3\Exception\InsufficientSetupException; use phpseclib3\Exception\NoSupportedAlgorithmsException; +use phpseclib3\Exception\RuntimeException; use phpseclib3\Exception\UnableToConnectException; use phpseclib3\Exception\UnsupportedAlgorithmException; use phpseclib3\Exception\UnsupportedCurveException; @@ -3264,18 +3265,18 @@ class SSH2 $cmf = ord($payload[0]); $cm = $cmf & 0x0F; if ($cm != 8) { // deflate - trigger_error("Only CM = 8 ('deflate') is supported ($cm)"); + throw new UnsupportedAlgorithmException("Only CM = 8 ('deflate') is supported ($cm)"); } $cinfo = ($cmf & 0xF0) >> 4; if ($cinfo > 7) { - trigger_error("CINFO above 7 is not allowed ($cinfo)"); + throw new RuntimeException("CINFO above 7 is not allowed ($cinfo)"); } $windowSize = 1 << ($cinfo + 8); $flg = ord($payload[1]); //$fcheck = $flg && 0x0F; if ((($cmf << 8) | $flg) % 31) { - trigger_error('fcheck failed'); + throw new RuntimeException('fcheck failed'); } $fdict = boolval($flg & 0x20); $flevel = ($flg & 0xC0) >> 6;