|
5 | 5 | "flag" |
6 | 6 | "fmt" |
7 | 7 | "log/slog" |
| 8 | + "math" |
8 | 9 | "net" |
9 | 10 | "net/http" |
10 | 11 | "os" |
@@ -139,9 +140,15 @@ func InitConfig() (*Config, error) { |
139 | 140 | flag.StringVar(&logLevel, "loglevel", defaultLogLevel, "set log level: DEBUG, INFO, WARN, ERROR") |
140 | 141 | flag.UintVar(&proxyPort, "proxyport", defaultProxyPort, "tcp port to listen on") |
141 | 142 | flag.UintVar(&cfg.ShutdownGraceTime, "shutdowngracetime", defaultShutdownGraceTime, "maximum time in seconds to wait for the server to shut down gracefully") |
| 143 | + if cfg.ShutdownGraceTime > math.MaxInt64 { |
| 144 | + return nil, fmt.Errorf("shutdowngracetime has to be smaller than %i", math.MaxInt64) // this maximum value has no practical significance |
| 145 | + } |
142 | 146 | flag.StringVar(&cfg.SocketPath, "socketpath", defaultSocketPath, "unix socket path to connect to") |
143 | 147 | flag.BoolVar(&cfg.StopOnWatchdog, "stoponwatchdog", defaultStopOnWatchdog, "stop the program when the socket gets unavailable (otherwise log only)") |
144 | 148 | flag.UintVar(&cfg.WatchdogInterval, "watchdoginterval", defaultWatchdogInterval, "watchdog interval in seconds (0 to disable)") |
| 149 | + if cfg.WatchdogInterval > math.MaxInt64 { |
| 150 | + return nil, fmt.Errorf("watchdoginterval has to be smaller than %i", math.MaxInt64) // this maximum value has no practical significance |
| 151 | + } |
145 | 152 | flag.StringVar(&cfg.ProxySocketEndpoint, "proxysocketendpoint", defaultProxySocketEndpoint, "unix socket endpoint (if set, used instead of the TCP listener)") |
146 | 153 | flag.UintVar(&endpointFileMode, "proxysocketendpointfilemode", defaultProxySocketEndpointFileMode, "set the file mode of the unix socket endpoint") |
147 | 154 | for i := range mr { |
@@ -172,7 +179,10 @@ func InitConfig() (*Config, error) { |
172 | 179 | return nil, errors.New("invalid log level " + logLevel + ": Supported levels are DEBUG, INFO, WARN, ERROR") |
173 | 180 | } |
174 | 181 |
|
175 | | - cfg.ProxySocketEndpointFileMode = os.FileMode(endpointFileMode) |
| 182 | + if endpointFileMode > 0o777 { |
| 183 | + return nil, errors.New("file mode has to be between 0 and 0o777") |
| 184 | + } |
| 185 | + cfg.ProxySocketEndpointFileMode = os.FileMode(uint32(endpointFileMode)) |
176 | 186 |
|
177 | 187 | // compile regexes for allowed requests |
178 | 188 | cfg.AllowedRequests = make(map[string]*regexp.Regexp) |
|
0 commit comments