Skip to content

Commit 79c61d5

Browse files
authored
Merge pull request kubernetes#124124 from carlory/fix-124120
fix panic with SIGSEGV in kubeadm certs check-expiration
2 parents 3dedb8e + 363fee5 commit 79c61d5

File tree

4 files changed

+17
-14
lines changed

4 files changed

+17
-14
lines changed

cmd/kubeadm/app/phases/certs/renewal/manager.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -322,7 +322,7 @@ func (rm *Manager) CertificateExists(name string) (bool, error) {
322322
return false, errors.Errorf("%s is not a known certificate", name)
323323
}
324324

325-
return handler.readwriter.Exists(), nil
325+
return handler.readwriter.Exists()
326326
}
327327

328328
// GetCertificateExpirationInfo returns certificate expiration info.
@@ -358,7 +358,7 @@ func (rm *Manager) CAExists(name string) (bool, error) {
358358
return false, errors.Errorf("%s is not a known certificate", name)
359359
}
360360

361-
return handler.readwriter.Exists(), nil
361+
return handler.readwriter.Exists()
362362
}
363363

364364
// GetCAExpirationInfo returns CA expiration info.

cmd/kubeadm/app/phases/certs/renewal/manager_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ type fakecertificateReadWriter struct {
5454
cert *x509.Certificate
5555
}
5656

57-
func (cr fakecertificateReadWriter) Exists() bool {
58-
return cr.exist
57+
func (cr fakecertificateReadWriter) Exists() (bool, error) {
58+
return cr.exist, nil
5959
}
6060

6161
func (cr fakecertificateReadWriter) Read() (*x509.Certificate, error) {

cmd/kubeadm/app/phases/certs/renewal/readwriter.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import (
3636
// read or write a certificate stored/embedded in a file
3737
type certificateReadWriter interface {
3838
//Exists return true if the certificate exists
39-
Exists() bool
39+
Exists() (bool, error)
4040

4141
// Read a certificate stored/embedded in a file
4242
Read() (*x509.Certificate, error)
@@ -61,17 +61,20 @@ func newPKICertificateReadWriter(certificateDir string, baseName string) *pkiCer
6161
}
6262

6363
// Exists checks if a certificate exist
64-
func (rw *pkiCertificateReadWriter) Exists() bool {
64+
func (rw *pkiCertificateReadWriter) Exists() (bool, error) {
6565
certificatePath, _ := pkiutil.PathsForCertAndKey(rw.certificateDir, rw.baseName)
6666
return fileExists(certificatePath)
6767
}
6868

69-
func fileExists(filename string) bool {
69+
func fileExists(filename string) (bool, error) {
7070
info, err := os.Stat(filename)
71-
if os.IsNotExist(err) {
72-
return false
71+
if err != nil {
72+
if os.IsNotExist(err) {
73+
return false, nil
74+
}
75+
return false, err
7376
}
74-
return !info.IsDir()
77+
return !info.IsDir(), nil
7578
}
7679

7780
// Read a certificate from a file the K8s pki managed by kubeadm
@@ -120,7 +123,7 @@ func newKubeconfigReadWriter(kubernetesDir string, kubeConfigFileName string, ce
120123
}
121124

122125
// Exists checks if a certificate embedded in kubeConfig file exists
123-
func (rw *kubeConfigReadWriter) Exists() bool {
126+
func (rw *kubeConfigReadWriter) Exists() (bool, error) {
124127
return fileExists(rw.kubeConfigFilePath)
125128
}
126129

cmd/kubeadm/app/phases/certs/renewal/readwriter_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ func TestFileExists(t *testing.T) {
239239
}
240240
for _, tt := range tests {
241241
t.Run(tt.name, func(t *testing.T) {
242-
if got := fileExists(tt.filename); got != tt.want {
242+
if got, _ := fileExists(tt.filename); got != tt.want {
243243
t.Errorf("fileExists() = %v, want %v", got, tt.want)
244244
}
245245
})
@@ -295,7 +295,7 @@ func TestPKICertificateReadWriterExists(t *testing.T) {
295295
baseName: tt.fields.baseName,
296296
certificateDir: tt.fields.certificateDir,
297297
}
298-
if got := rw.Exists(); got != tt.want {
298+
if got, _ := rw.Exists(); got != tt.want {
299299
t.Errorf("pkiCertificateReadWriter.Exists() = %v, want %v", got, tt.want)
300300
}
301301
})
@@ -338,7 +338,7 @@ func TestKubeConfigReadWriterExists(t *testing.T) {
338338
rw := &kubeConfigReadWriter{
339339
kubeConfigFilePath: tt.kubeConfigFilePath,
340340
}
341-
if got := rw.Exists(); got != tt.want {
341+
if got, _ := rw.Exists(); got != tt.want {
342342
t.Errorf("kubeConfigReadWriter.Exists() = %v, want %v", got, tt.want)
343343
}
344344
})

0 commit comments

Comments
 (0)