Fix: check target is valid in rules (#210)

This commit is contained in:
gVisor bot 2019-06-20 11:03:50 +08:00
parent c7da6fb109
commit 697b82b9fe

View file

@ -157,7 +157,7 @@ func Parse(path string) (*Config, error) {
}
config.Proxies = proxies
rules, err := parseRules(rawCfg)
rules, err := parseRules(rawCfg, proxies)
if err != nil {
return nil, err
}
@ -354,7 +354,7 @@ func parseProxies(cfg *rawConfig) (map[string]C.Proxy, error) {
return proxies, nil
}
func parseRules(cfg *rawConfig) ([]C.Rule, error) {
func parseRules(cfg *rawConfig, proxies map[string]C.Proxy) ([]C.Rule, error) {
rules := []C.Rule{}
rulesConfig := cfg.Rule
@ -376,6 +376,10 @@ func parseRules(cfg *rawConfig) ([]C.Rule, error) {
return nil, fmt.Errorf("Rules[%d] [%s] error: format invalid", idx, line)
}
if _, ok := proxies[target]; !ok {
return nil, fmt.Errorf("Rules[%d] [%s] error: proxy [%s] not found", idx, line, target)
}
rule = trimArr(rule)
var parsed C.Rule
switch rule[0] {