Skip to content

Commit e900eb9

Browse files
authored
Merge pull request #116 from smallstep/tlsrenewer-race
Fix race conditions on tlsutil
2 parents 00ae6d5 + cef82d7 commit e900eb9

File tree

3 files changed

+15
-8
lines changed

3 files changed

+15
-8
lines changed

kms/kms_test.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,6 @@ func TestNew(t *testing.T) {
4040
{"uri", false, args{ctx, apiv1.Options{URI: "softkms:foo=bar"}}, &softkms.SoftKMS{}, false},
4141
{"awskms", false, args{ctx, apiv1.Options{Type: "awskms"}}, &awskms.KMS{}, false},
4242
{"cloudkms", true, args{ctx, apiv1.Options{Type: "cloudkms"}}, &cloudkms.CloudKMS{}, failCloudKMS},
43-
{"fail not enabled", false, args{ctx, apiv1.Options{Type: "pkcs11"}}, nil, true}, // not enabled
4443
{"fail validation", false, args{ctx, apiv1.Options{Type: "foobar"}}, nil, true},
4544
}
4645
for _, tt := range tests {

tlsutil/renewer.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,8 @@ func (r *Renewer) RunContext(ctx context.Context) {
116116

117117
// Stop prevents the renew timer from firing.
118118
func (r *Renewer) Stop() bool {
119+
r.Lock()
120+
defer r.Unlock()
119121
if r.timer != nil {
120122
return r.timer.Stop()
121123
}

tlsutil/renewer_test.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
var (
2626
issuerCert *x509.Certificate
2727
issuerKey crypto.Signer
28+
leafCsr *x509.CertificateRequest
2829
leafCert *x509.Certificate
2930
leafKey crypto.Signer
3031
tlsCert *tls.Certificate
@@ -60,7 +61,7 @@ func TestMain(m *testing.M) {
6061
if err != nil {
6162
panic(err)
6263
}
63-
leafCsr, err := x509util.CreateCertificateRequest("Leaf", []string{"127.0.0.1", "localhost"}, leafKey)
64+
leafCsr, err = x509util.CreateCertificateRequest("Leaf", []string{"127.0.0.1", "localhost"}, leafKey)
6465
if err != nil {
6566
panic(err)
6667
}
@@ -97,18 +98,23 @@ func TestMain(m *testing.M) {
9798
}
9899

99100
func testRenewFunc() (*tls.Certificate, *tls.Config, error) {
100-
var err error
101-
leafCert.NotBefore = time.Now()
102-
leafCert.NotAfter = leafCert.NotBefore.Add(time.Hour)
103-
leafCert.SerialNumber = leafCert.SerialNumber.Add(leafCert.SerialNumber, big.NewInt(1))
104-
leafCert, err = x509util.CreateCertificate(leafCert, issuerCert, leafKey.Public(), issuerKey)
101+
cert, err := x509util.NewCertificate(leafCsr,
102+
x509util.WithTemplate(x509util.DefaultLeafTemplate, x509util.CreateTemplateData("Leaf", []string{"127.0.0.1", "localhost"})))
103+
if err != nil {
104+
return nil, nil, err
105+
}
106+
template := cert.GetCertificate()
107+
template.NotBefore = time.Now()
108+
template.NotAfter = template.NotBefore.Add(time.Hour)
109+
template.SerialNumber = big.NewInt(1)
110+
leaf, err := x509util.CreateCertificate(template, issuerCert, leafKey.Public(), issuerKey)
105111
if err != nil {
106112
return nil, nil, err
107113
}
108114
return &tls.Certificate{
109115
Certificate: [][]byte{leafCert.Raw},
110116
PrivateKey: leafKey,
111-
Leaf: leafCert,
117+
Leaf: leaf,
112118
}, tlsConfig, nil
113119
}
114120

0 commit comments

Comments
 (0)