diff --git a/daemon/logger/splunk/splunk.go b/daemon/logger/splunk/splunk.go index 39f2e5af7ea08..8c1237ecfb633 100644 --- a/daemon/logger/splunk/splunk.go +++ b/daemon/logger/splunk/splunk.go @@ -23,6 +23,7 @@ import ( "github.com/docker/docker/daemon/logger/loggerutils" "github.com/docker/docker/pkg/pools" "github.com/docker/docker/pkg/urlutil" + "github.com/docker/docker/vendor/github.com/pkg/errors" "github.com/google/uuid" "github.com/sirupsen/logrus" ) @@ -236,6 +237,9 @@ func New(info logger.Info) (logger.Logger, error) { if err != nil { return nil, err } + if value < 0 { + return nil, errors.Errorf("negative timeout provided: %v", value) + } timeout = value } diff --git a/daemon/logger/splunk/splunk_test.go b/daemon/logger/splunk/splunk_test.go index 5364b38440421..02f033df04b07 100644 --- a/daemon/logger/splunk/splunk_test.go +++ b/daemon/logger/splunk/splunk_test.go @@ -1449,3 +1449,24 @@ func TestCustomHttpTimeout(t *testing.T) { t.Fatal(err) } } + +func TestNegativeTimeout(t *testing.T) { + info := logger.Info{ + Config: map[string]string{ + splunkURLKey: "http://localhost:8000", + splunkTokenKey: "1234", + splunkHTTPTimeout: "-100ms", + }, + ContainerID: "containeriid", + ContainerName: "/container_name", + ContainerImageID: "contaimageid", + ContainerImageName: "container_image_name", + } + _, err := New(info) + if err == nil { + t.Fatal("no error") + } + if err.Error() != "negative timeout provided: -100ms" { + t.Fatalf("unexpected error message: %s", err.Error()) + } +}