From 3db1995599c4383d31c9a37dd4f59c0692b90c95 Mon Sep 17 00:00:00 2001 From: Daniel Beal Date: Mon, 7 Aug 2023 12:34:18 -0700 Subject: [PATCH] fixes for audit * fix typo in external node definition * emit parameter error when bytes32 arrays dont match up --- .../contracts/interfaces/external/IExternalNode.sol | 2 +- protocol/oracle-manager/contracts/modules/NodeModule.sol | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/protocol/oracle-manager/contracts/interfaces/external/IExternalNode.sol b/protocol/oracle-manager/contracts/interfaces/external/IExternalNode.sol index a99e528713..275a629d15 100644 --- a/protocol/oracle-manager/contracts/interfaces/external/IExternalNode.sol +++ b/protocol/oracle-manager/contracts/interfaces/external/IExternalNode.sol @@ -12,7 +12,7 @@ interface IExternalNode is IERC165 { NodeOutput.Data[] memory parentNodeOutputs, bytes memory parameters, bytes32[] memory runtimeKeys, - bytes32[] memory runtimeValuess + bytes32[] memory runtimeValues ) external view returns (NodeOutput.Data memory); function isValid(NodeDefinition.Data memory nodeDefinition) external returns (bool); diff --git a/protocol/oracle-manager/contracts/modules/NodeModule.sol b/protocol/oracle-manager/contracts/modules/NodeModule.sol index 5670706d5a..c09e096f19 100644 --- a/protocol/oracle-manager/contracts/modules/NodeModule.sol +++ b/protocol/oracle-manager/contracts/modules/NodeModule.sol @@ -14,6 +14,8 @@ import "../nodes/ConstantNode.sol"; import "../storage/NodeOutput.sol"; import "../storage/NodeDefinition.sol"; +import "@synthetixio/core-contracts/contracts/errors/ParameterError.sol"; + /** * @title Module for managing nodes * @dev See INodeModule. @@ -151,6 +153,13 @@ contract NodeModule is INodeModule { bytes32[] memory runtimeKeys, bytes32[] memory runtimeValues ) internal view returns (NodeOutput.Data memory price) { + if (runtimeKeys.length != runtimeValues.length) { + revert ParameterError.InvalidParameter( + "runtimeValues", + "must be same length as runtimeKeys" + ); + } + NodeDefinition.Data memory nodeDefinition = NodeDefinition.load(nodeId); if (nodeDefinition.nodeType == NodeDefinition.NodeType.REDUCER) {