acvptool: Fix error reporting if dk or c are empty err could be nil when bound to %s. Change-Id: I96d26517fb7ee6ca4ca65d9a3056bc5e31715a91 Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/83767 Reviewed-by: Adam Langley <agl@google.com> Auto-Submit: David Benjamin <davidben@google.com> Commit-Queue: David Benjamin <davidben@google.com>
diff --git a/util/fipstools/acvp/acvptool/subprocess/mlkem.go b/util/fipstools/acvp/acvptool/subprocess/mlkem.go index e01cb2e..a112ed8 100644 --- a/util/fipstools/acvp/acvptool/subprocess/mlkem.go +++ b/util/fipstools/acvp/acvptool/subprocess/mlkem.go
@@ -3,6 +3,7 @@ import ( "encoding/hex" "encoding/json" + "errors" "fmt" "strings" ) @@ -80,6 +81,17 @@ K string `json:"k,omitempty"` } +func decodeNonEmptyHex(in string) ([]byte, error) { + ret, err := hex.DecodeString(in) + if err != nil { + return nil, err + } + if len(ret) == 0 { + return nil, errors.New("empty string") + } + return ret, nil +} + type mlkem struct{} func (m *mlkem) Process(vectorSet []byte, t Transactable) (any, error) { @@ -202,14 +214,14 @@ cmdName := group.ParameterSet + "/decap" for _, test := range group.Tests { - dk, err := hex.DecodeString(test.DK) - if err != nil || len(dk) == 0 { + dk, err := decodeNonEmptyHex(test.DK) + if err != nil { return nil, fmt.Errorf("failed to decode dk in test case %d/%d: %s", group.ID, test.ID, err) } - c, err := hex.DecodeString(test.C) - if err != nil || len(c) == 0 { + c, err := decodeNonEmptyHex(test.C) + if err != nil { return nil, fmt.Errorf("failed to decode c in test case %d/%d: %s", group.ID, test.ID, err) }