mirror of
https://github.com/moby/moby.git
synced 2026-01-11 18:51:37 +00:00
Some false positives from gosec (G602: slice index out of range)
integration-cli/daemon/daemon.go:109:1: deprecatedComment: `Deprecated: ` notices should be in a dedicated paragraph, separated from the rest (gocritic)
// Deprecated: use cli.WaitCmd instead
^
integration-cli/docker_cli_build_test.go:562:3: dupOption: function argument `build.WithFile("test_file3", "test3")` is duplicated (gocritic)
build.WithFile("test_file3", "test3"),
^
integration-cli/docker_utils_test.go:250:1: deprecatedComment: `Deprecated: ` notices should be in a dedicated paragraph, separated from the rest (gocritic)
// Deprecated: use cli.WaitFor
^
daemon/libnetwork/ipams/defaultipam/address_space.go:45:39: G602: slice index out of range (gosec)
if predefined[j].Overlaps(predefined[i].Base) {
^
daemon/libnetwork/ipams/defaultipam/address_space.go:49:29: G602: slice index out of range (gosec)
predefined[j] = predefined[i]
^
daemon/libnetwork/libnetwork_linux_test.go:1492:9: G602: slice index out of range (gosec)
sboxes[thd-1], err = controller.NewSandbox(context.Background(), fmt.Sprintf("%drace", thd))
^
daemon/libnetwork/networkdb/cluster_test.go:111:21: G602: slice index out of range (gosec)
mean, stdev := nf[0], nf[1]
^
daemon/libnetwork/osl/interface_linux.go:586:54: G602: slice index out of range (gosec)
log.G(ctx).WithField("portState", stateFileContent[0]).Debug("waiting for bridge port to be forwarding")
^
daemon/libnetwork/osl/interface_linux.go:594:32: G602: slice index out of range (gosec)
"portState": stateFileContent[0],
^
daemon/libnetwork/portallocator/osallocator_linux_test.go:358:13: G602: slice index out of range (gosec)
if payload[0] != 0x1 {
^
daemon/libnetwork/portallocator/osallocator_linux_test.go:359:68: G602: slice index out of range (gosec)
readCh <- fmt.Errorf("expected payload 0x1, but got %x", payload[0])
^
daemon/logger/gelf/gelf_test.go:197:9: nilness: impossible condition: nil != nil (govet)
if err != nil {
^
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
262 lines
5.6 KiB
Go
262 lines
5.6 KiB
Go
//go:build linux
|
|
|
|
package gelf
|
|
|
|
import (
|
|
"net"
|
|
"testing"
|
|
|
|
"github.com/moby/moby/v2/daemon/logger"
|
|
)
|
|
|
|
// Validate parseAddress
|
|
func TestParseAddress(t *testing.T) {
|
|
url, err := parseAddress("udp://127.0.0.1:12201")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if url.String() != "udp://127.0.0.1:12201" {
|
|
t.Fatalf("Expected address udp://127.0.0.1:12201, got %s", url.String())
|
|
}
|
|
|
|
_, err = parseAddress("127.0.0.1:12201")
|
|
if err == nil {
|
|
t.Fatal("Expected error requiring protocol")
|
|
}
|
|
|
|
_, err = parseAddress("http://127.0.0.1:12201")
|
|
if err == nil {
|
|
t.Fatal("Expected error restricting protocol")
|
|
}
|
|
}
|
|
|
|
// Validate TCP options
|
|
func TestTCPValidateLogOpt(t *testing.T) {
|
|
err := ValidateLogOpt(map[string]string{
|
|
"gelf-address": "tcp://127.0.0.1:12201",
|
|
})
|
|
if err != nil {
|
|
t.Fatal("Expected TCP to be supported")
|
|
}
|
|
|
|
err = ValidateLogOpt(map[string]string{
|
|
"gelf-address": "tcp://127.0.0.1:12201",
|
|
"gelf-compression-level": "9",
|
|
})
|
|
if err == nil {
|
|
t.Fatal("Expected TCP to reject compression level")
|
|
}
|
|
|
|
err = ValidateLogOpt(map[string]string{
|
|
"gelf-address": "tcp://127.0.0.1:12201",
|
|
"gelf-compression-type": "gzip",
|
|
})
|
|
if err == nil {
|
|
t.Fatal("Expected TCP to reject compression type")
|
|
}
|
|
|
|
err = ValidateLogOpt(map[string]string{
|
|
"gelf-address": "tcp://127.0.0.1:12201",
|
|
"gelf-tcp-max-reconnect": "5",
|
|
"gelf-tcp-reconnect-delay": "10",
|
|
})
|
|
if err != nil {
|
|
t.Fatal("Expected TCP reconnect to be a valid parameters")
|
|
}
|
|
|
|
err = ValidateLogOpt(map[string]string{
|
|
"gelf-address": "tcp://127.0.0.1:12201",
|
|
"gelf-tcp-max-reconnect": "-1",
|
|
"gelf-tcp-reconnect-delay": "-3",
|
|
})
|
|
if err == nil {
|
|
t.Fatal("Expected negative TCP reconnect to be rejected")
|
|
}
|
|
|
|
err = ValidateLogOpt(map[string]string{
|
|
"gelf-address": "tcp://127.0.0.1:12201",
|
|
"gelf-tcp-max-reconnect": "invalid",
|
|
"gelf-tcp-reconnect-delay": "invalid",
|
|
})
|
|
if err == nil {
|
|
t.Fatal("Expected TCP reconnect to be required to be an int")
|
|
}
|
|
|
|
err = ValidateLogOpt(map[string]string{
|
|
"gelf-address": "udp://127.0.0.1:12201",
|
|
"gelf-tcp-max-reconnect": "1",
|
|
"gelf-tcp-reconnect-delay": "3",
|
|
})
|
|
if err == nil {
|
|
t.Fatal("Expected TCP reconnect to be invalid for UDP")
|
|
}
|
|
}
|
|
|
|
// Validate UDP options
|
|
func TestUDPValidateLogOpt(t *testing.T) {
|
|
err := ValidateLogOpt(map[string]string{
|
|
"gelf-address": "udp://127.0.0.1:12201",
|
|
"tag": "testtag",
|
|
"labels": "testlabel",
|
|
"labels-regex": "testlabel-regex",
|
|
"env": "testenv",
|
|
"env-regex": "testenv-regex",
|
|
"gelf-compression-level": "9",
|
|
"gelf-compression-type": "gzip",
|
|
})
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = ValidateLogOpt(map[string]string{
|
|
"gelf-address": "udp://127.0.0.1:12201",
|
|
"gelf-compression-level": "ultra",
|
|
"gelf-compression-type": "zlib",
|
|
})
|
|
if err == nil {
|
|
t.Fatal("Expected compression level error")
|
|
}
|
|
|
|
err = ValidateLogOpt(map[string]string{
|
|
"gelf-address": "udp://127.0.0.1:12201",
|
|
"gelf-compression-type": "rar",
|
|
})
|
|
if err == nil {
|
|
t.Fatal("Expected compression type error")
|
|
}
|
|
|
|
err = ValidateLogOpt(map[string]string{
|
|
"invalid": "invalid",
|
|
})
|
|
if err == nil {
|
|
t.Fatal("Expected unknown option error")
|
|
}
|
|
|
|
err = ValidateLogOpt(map[string]string{})
|
|
if err == nil {
|
|
t.Fatal("Expected required parameter error")
|
|
}
|
|
}
|
|
|
|
// Validate newGELFTCPWriter
|
|
func TestNewGELFTCPWriter(t *testing.T) {
|
|
address := "127.0.0.1:0"
|
|
tcpAddr, err := net.ResolveTCPAddr("tcp", address)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
listener, err := net.ListenTCP("tcp", tcpAddr)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
url := "tcp://" + listener.Addr().String()
|
|
info := logger.Info{
|
|
Config: map[string]string{
|
|
"gelf-address": url,
|
|
"gelf-tcp-max-reconnect": "0",
|
|
"gelf-tcp-reconnect-delay": "0",
|
|
"tag": "{{.ID}}",
|
|
},
|
|
ContainerID: "12345678901234567890",
|
|
}
|
|
|
|
writer, err := newGELFTCPWriter(listener.Addr().String(), info)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = writer.Close()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = listener.Close()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
// Validate newGELFUDPWriter
|
|
func TestNewGELFUDPWriter(t *testing.T) {
|
|
address := "127.0.0.1:0"
|
|
info := logger.Info{
|
|
Config: map[string]string{
|
|
"gelf-address": "udp://127.0.0.1:0",
|
|
"gelf-compression-level": "5",
|
|
"gelf-compression-type": "gzip",
|
|
},
|
|
}
|
|
|
|
writer, err := newGELFUDPWriter(address, info)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
err = writer.Close()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
// Validate New for TCP
|
|
func TestNewTCP(t *testing.T) {
|
|
address := "127.0.0.1:0"
|
|
tcpAddr, err := net.ResolveTCPAddr("tcp", address)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
listener, err := net.ListenTCP("tcp", tcpAddr)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
url := "tcp://" + listener.Addr().String()
|
|
info := logger.Info{
|
|
Config: map[string]string{
|
|
"gelf-address": url,
|
|
"gelf-tcp-max-reconnect": "0",
|
|
"gelf-tcp-reconnect-delay": "0",
|
|
},
|
|
ContainerID: "12345678901234567890",
|
|
}
|
|
|
|
gelfLogger, err := New(info)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = gelfLogger.Close()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = listener.Close()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|
|
|
|
// Validate New for UDP
|
|
func TestNewUDP(t *testing.T) {
|
|
info := logger.Info{
|
|
Config: map[string]string{
|
|
"gelf-address": "udp://127.0.0.1:0",
|
|
"gelf-compression-level": "5",
|
|
"gelf-compression-type": "gzip",
|
|
},
|
|
ContainerID: "12345678901234567890",
|
|
}
|
|
|
|
gelfLogger, err := New(info)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
err = gelfLogger.Close()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
}
|