diff --git a/connector/http.go b/connector/http.go index 0046a76..7cbdcb7 100644 --- a/connector/http.go +++ b/connector/http.go @@ -2,6 +2,7 @@ package connector import ( "bytes" + "errors" "fmt" "io/ioutil" "net/http" @@ -10,6 +11,8 @@ import ( "github.com/certusone/yubihsm-go/commands" ) +var ErrInvalidResponseValueLength = errors.New("invalid response value length") + type ( // HTTPConnector implements the HTTP based connection with the YubiHSM2 connector HTTPConnector struct { @@ -77,6 +80,10 @@ func (c *HTTPConnector) GetStatus() (status *StatusResponse, err error) { values = append(values, strings.Split(pair, "=")...) } + if values == nil || len(values) < 12 { + return nil, ErrInvalidResponseValueLength + } + status = &StatusResponse{} status.Status = Status(values[1]) status.Serial = values[3]