Call conn.Reject() if SOCKS arguments are invalid

This commit is contained in:
Cecylia Bocovich 2021-08-19 21:31:51 -04:00
parent 97175a91a5
commit a39d6693e1

View file

@ -62,12 +62,6 @@ func socksAcceptLoop(ln *pt.SocksListener, config sf.ClientConfig, shutdown chan
defer wg.Done() defer wg.Done()
defer conn.Close() defer conn.Close()
err := conn.Grant(&net.TCPAddr{IP: net.IPv4zero, Port: 0})
if err != nil {
log.Printf("conn.Grant error: %s", err)
return
}
// Check to see if our command line options are overriden by SOCKS options // Check to see if our command line options are overriden by SOCKS options
if arg, ok := conn.Req.Args.Get("ampcache"); ok { if arg, ok := conn.Req.Args.Get("ampcache"); ok {
config.AmpCacheURL = arg config.AmpCacheURL = arg
@ -80,16 +74,26 @@ func socksAcceptLoop(ln *pt.SocksListener, config sf.ClientConfig, shutdown chan
} }
if arg, ok := conn.Req.Args.Get("max"); ok { if arg, ok := conn.Req.Args.Get("max"); ok {
max, err := strconv.Atoi(arg) max, err := strconv.Atoi(arg)
if err == nil { if err != nil {
config.Max = max conn.Reject()
log.Println("Invalid SOCKS arg: max=", arg)
return
} }
config.Max = max
} }
if arg, ok := conn.Req.Args.Get("url"); ok { if arg, ok := conn.Req.Args.Get("url"); ok {
config.BrokerURL = arg config.BrokerURL = arg
} }
transport, err := sf.NewSnowflakeClient(config) transport, err := sf.NewSnowflakeClient(config)
if err != nil { if err != nil {
log.Fatal("Failed to start snowflake transport: ", err) conn.Reject()
log.Println("Failed to start snowflake transport: ", err)
return
}
err := conn.Grant(&net.TCPAddr{IP: net.IPv4zero, Port: 0})
if err != nil {
log.Printf("conn.Grant error: %s", err)
return
} }
handler := make(chan struct{}) handler := make(chan struct{})