Skip to content

Commit

Permalink
Return nil on errors instead of partially filled slices
Browse files Browse the repository at this point in the history
  • Loading branch information
stevendpclark committed Nov 22, 2022
1 parent f57df6a commit 02a9761
Showing 1 changed file with 8 additions and 8 deletions.
16 changes: 8 additions & 8 deletions builtin/logical/pki/path_resign_crls.go
Original file line number Diff line number Diff line change
Expand Up @@ -319,24 +319,24 @@ func parseRevokedCertsParam(revokedCerts []interface{}) ([]pkix.RevokedCertifica
if revokedCert, ok := entry.(map[string]interface{}); ok {
serialNum, err := parseSerialNum(revokedCert)
if err != nil {
return parsedCerts, fmt.Errorf("failed parsing serial_number from entry %d: %w", i, err)
return nil, fmt.Errorf("failed parsing serial_number from entry %d: %w", i, err)
}

if origEntry, exists := seenSerials[serialNum]; exists {
serialNumStr := revokedCert["serial_number"]
return parsedCerts, fmt.Errorf("duplicate serial number: %s, original entry %d and %d", serialNumStr, origEntry, i)
return nil, fmt.Errorf("duplicate serial number: %s, original entry %d and %d", serialNumStr, origEntry, i)
}

seenSerials[serialNum] = i

revocationTime, err := parseRevocationTime(revokedCert)
if err != nil {
return parsedCerts, fmt.Errorf("failed parsing revocation_time from entry %d: %w", i, err)
return nil, fmt.Errorf("failed parsing revocation_time from entry %d: %w", i, err)
}

extensions, err := parseCertExtensions(revokedCert)
if err != nil {
return parsedCerts, fmt.Errorf("failed parsing extensions from entry %d: %w", i, err)
return nil, fmt.Errorf("failed parsing extensions from entry %d: %w", i, err)
}

parsedCerts = append(parsedCerts, pkix.RevokedCertificate{
Expand All @@ -359,7 +359,7 @@ func parseCertExtensions(cert map[string]interface{}) ([]pkix.Extension, error)

extListRaw, ok := extRaw.([]interface{})
if !ok {
return []pkix.Extension{}, errors.New("'extensions' field did not contain a slice")
return nil, errors.New("'extensions' field did not contain a slice")
}

return parseExtensionsParam(extListRaw)
Expand All @@ -371,16 +371,16 @@ func parseExtensionsParam(extRawList []interface{}) ([]pkix.Extension, error) {
for i, entryRaw := range extRawList {
entry, ok := entryRaw.(map[string]interface{})
if !ok {
return []pkix.Extension{}, fmt.Errorf("extension entry %d not a map", i)
return nil, fmt.Errorf("extension entry %d not a map", i)
}
extension, err := parseExtension(entry)
if err != nil {
return []pkix.Extension{}, fmt.Errorf("failed parsing extension entry %d: %w", i, err)
return nil, fmt.Errorf("failed parsing extension entry %d: %w", i, err)
}

parsedIdStr := extension.Id.String()
if _, exists := seenOid[parsedIdStr]; exists {
return []pkix.Extension{}, fmt.Errorf("duplicate extension id: %s", parsedIdStr)
return nil, fmt.Errorf("duplicate extension id: %s", parsedIdStr)
}

seenOid[parsedIdStr] = struct{}{}
Expand Down

0 comments on commit 02a9761

Please sign in to comment.