From 2573bca07c9b842cc7d51551e40a1b72dd866cc6 Mon Sep 17 00:00:00 2001 From: Roland Haeder Date: Thu, 3 Sep 2015 22:10:14 +0200 Subject: [PATCH] Added exception InvalidPrivateKeyHashException and checked if private key's hash is not empty. Signed-off-by: Roland Haeder --- .../classes/package/class_NetworkPackage.php | 5 +- .../hub/classes/tools/class_HubTools.php | 2 +- .../class_InvalidPrivateKeyHashException.php | 47 +++++++++++++++++++ 3 files changed, 51 insertions(+), 3 deletions(-) create mode 100644 application/hub/exceptions/package/class_InvalidPrivateKeyHashException.php diff --git a/application/hub/classes/package/class_NetworkPackage.php b/application/hub/classes/package/class_NetworkPackage.php index bc471498e..abf479254 100644 --- a/application/hub/classes/package/class_NetworkPackage.php +++ b/application/hub/classes/package/class_NetworkPackage.php @@ -346,6 +346,7 @@ class NetworkPackage extends BaseHubSystem implements Deliverable, Receivable, R * * @param $decodedData Array with decoded data * @return $hash Private key's hash + * @throws InvalidPrivateKeyHashException If the private key's hash is not valid */ private function determineSenderPrivateKeyHash (array $decodedData) { // Get DHT instance @@ -363,7 +364,7 @@ class NetworkPackage extends BaseHubSystem implements Deliverable, Receivable, R // Don't accept empty hashes if (empty($senderData[NodeDistributedHashTableDatabaseWrapper::DB_COLUMN_PRIVATE_KEY_HASH])) { // Don't accept - die('[' . __METHOD__ . ':' . __LINE__ . ':] Empty private key hash: senderData=' . print_r($senderData, TRUE)); + throw new InvalidPrivateKeyHashException(array($this, $senderData, 'empty hash in senderData')); } // END - if // Return it @@ -377,7 +378,7 @@ class NetworkPackage extends BaseHubSystem implements Deliverable, Receivable, R // Don't accept empty keys if (empty($decodedData[self::PACKAGE_CONTENT_PRIVATE_KEY_HASH])) { // This needs fixing - die('[' . __METHOD__ . ':' . __LINE__ . ':] Empty private key hash: decodedData=' . print_r($decodedData, TRUE)); + throw new InvalidPrivateKeyHashException(array($this, $senderData, 'empty hash in decodedData')); } // END - if // There is no DHT entry so, accept the hash from decoded data diff --git a/application/hub/classes/tools/class_HubTools.php b/application/hub/classes/tools/class_HubTools.php index 988fa7a4d..37636f29c 100644 --- a/application/hub/classes/tools/class_HubTools.php +++ b/application/hub/classes/tools/class_HubTools.php @@ -133,7 +133,7 @@ class HubTools extends BaseHubSystem { $nodeData = $selfInstance->getDhtInstance()->findNodeLocalBySessionId($sessionId); // Make sure the node id is there - //* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('HUB-TOOLS[' . __METHOD__ . ':' . __LINE__ . ']: sessionId=' . $sessionId . ', nodeData[' . gettype($nodeData) . ']=' . print_r($nodeData, TRUE)); + /* NOISY-DEBUG: */ self::createDebugInstance(__CLASS__)->debugOutput('HUB-TOOLS[' . __METHOD__ . ':' . __LINE__ . ']: sessionId=' . $sessionId . ', nodeData[' . gettype($nodeData) . ']=' . print_r($nodeData, TRUE)); assert(isset($nodeData[NodeDistributedHashTableDatabaseWrapper::DB_COLUMN_NODE_ID])); // Return it diff --git a/application/hub/exceptions/package/class_InvalidPrivateKeyHashException.php b/application/hub/exceptions/package/class_InvalidPrivateKeyHashException.php new file mode 100644 index 000000000..5a51d828b --- /dev/null +++ b/application/hub/exceptions/package/class_InvalidPrivateKeyHashException.php @@ -0,0 +1,47 @@ + + * @version 0.0.0 + * @copyright Copyright (c) 2007, 2008 Roland Haeder, 2009 - 2015 Hub Developer Team + * @license GNU GPL 3.0 or any newer version + * @link http://www.shipsimu.org + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +class InvalidPrivateKeyHashException extends FrameworkException { + /** + * The super constructor for all exceptions + * + * @param $messageArray Error message array + * @param $code Error code + * @return void + */ + public function __construct (array $messageArray, $code) { + // Construct the message + $message = sprintf('[%s:%d] The package hash is not valid, data=%s, message: %s', + $messageArray[0]->__toString(), + $this->getLine(), + $messageArray[1], + $messageArray[2] + ); + + // Call parent exception constructor + parent::__construct($message, $code); + } +} + +// [EOF] +?> -- 2.30.2