Skip to content

Commit ee1ec2f

Browse files
author
Daisuke IIZUKA
committed
[FAB-10860] Fix nil pointer access by broken cert
Add error handling when ito reads broken cert. Change-Id: I43b7ae1cfee143800fde36b74de24edfb96c0a4c Signed-off-by: Daisuke IIZUKA <daisuke.iizuka.ag@hitachi.com>
1 parent 2dc642e commit ee1ec2f

File tree

3 files changed

+14
-0
lines changed

3 files changed

+14
-0
lines changed

cmd/common/signer/signer.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ func loadPrivateKey(file string) (*ecdsa.PrivateKey, error) {
7878
return nil, errors.WithStack(err)
7979
}
8080
bl, _ := pem.Decode(b)
81+
if bl == nil {
82+
return nil, errors.Errorf("%s: wrong PEM encoding", file)
83+
}
8184
key, err := x509.ParsePKCS8PrivateKey(bl.Bytes)
8285
if err != nil {
8386
return nil, errors.WithStack(err)

cmd/common/signer/signer_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,14 @@ func TestSignerBadConfig(t *testing.T) {
5353
signer, err = NewSigner(conf)
5454
assert.Contains(t, err.Error(), "open testdata/signer/non_existent_cert: no such file or directory")
5555
assert.Nil(t, signer)
56+
57+
conf = Config{
58+
MSPID: "SampleOrg",
59+
IdentityPath: filepath.Join("testdata", "signer", "cert.pem"),
60+
KeyPath: filepath.Join("testdata", "signer", "broken_private_key"),
61+
}
62+
63+
signer, err = NewSigner(conf)
64+
assert.Contains(t, err.Error(), "testdata/signer/broken_private_key: wrong PEM encoding")
65+
assert.Nil(t, signer)
5666
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
broken

0 commit comments

Comments
 (0)