浏览代码

GSNSignatureBouncer fix (#1920)

* GSNSignatureBoucer does not accept zero address

* Linting code.

* Update contracts/GSN/bouncers/GSNBouncerSignature.sol

Makes sense!

Co-Authored-By: Nicolás Venturo <nicolas.venturo@gmail.com>

* Update test/GSN/GSNBouncerSignature.test.js

ok!

Co-Authored-By: Nicolás Venturo <nicolas.venturo@gmail.com>

* Add zero address constant from OZ test Helpers

* revert prettier formatting

(cherry picked from commit f9a94788fbd50e2e2f4eb0eb40bbfd57a5645a4e)
Dennison Bertram 6 年之前
父节点
当前提交
8026a8ae2e
共有 2 个文件被更改,包括 14 次插入1 次删除
  1. 1 0
      contracts/GSN/bouncers/GSNBouncerSignature.sol
  2. 13 1
      test/GSN/GSNBouncerSignature.test.js

+ 1 - 0
contracts/GSN/bouncers/GSNBouncerSignature.sol

@@ -22,6 +22,7 @@ contract GSNBouncerSignature is GSNBouncerBase {
      * @dev Sets the trusted signer that is going to be producing signatures to approve relayed calls.
      */
     constructor(address trustedSigner) public {
+        require(trustedSigner != address(0), "GSNBouncerSignature: trusted signer is the zero address");
         _trustedSigner = trustedSigner;
     }
 

+ 13 - 1
test/GSN/GSNBouncerSignature.test.js

@@ -1,7 +1,8 @@
-const { expectEvent } = require('openzeppelin-test-helpers');
+const { expectEvent, expectRevert, constants } = require('openzeppelin-test-helpers');
 const gsn = require('@openzeppelin/gsn-helpers');
 const { fixSignature } = require('../helpers/sign');
 const { utils: { toBN } } = require('web3');
+const { ZERO_ADDRESS } = constants;
 
 const GSNBouncerSignatureMock = artifacts.require('GSNBouncerSignatureMock');
 
@@ -17,6 +18,17 @@ contract('GSNBouncerSignature', function ([_, signer, other]) {
     });
   });
 
+  context('when constructor is called with a zero address', function () {
+    it('fails when constructor called with a zero address', async function () {
+      await expectRevert(
+        GSNBouncerSignatureMock.new(
+          ZERO_ADDRESS
+        ),
+        'GSNBouncerSignature: trusted signer is the zero address'
+      );
+    });
+  });
+
   context('when relay-called', function () {
     beforeEach(async function () {
       await gsn.fundRecipient(web3, { recipient: this.recipient.address });