Skip to content

Commit cfdaebe

Browse files
committed
chore: check fake-ip-range and fake-ip-range6 are indeed ipv4 and ipv6 prefixes
1 parent c8af92a commit cfdaebe

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

config/config.go

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -685,6 +685,8 @@ func ParseRawConfig(rawCfg *RawConfig) (*Config, error) {
685685
}
686686
config.Hosts = hosts
687687

688+
parseIPV6(rawCfg) // must before DNS and Tun
689+
688690
dnsCfg, err := parseDNS(rawCfg, ruleProviders)
689691
if err != nil {
690692
return nil, err
@@ -1417,13 +1419,19 @@ func parseDNS(rawCfg *RawConfig, ruleProviders map[string]providerTypes.RuleProv
14171419
if err != nil {
14181420
return nil, err
14191421
}
1422+
if !dnsCfg.FakeIPRange.Addr().Is4() {
1423+
return nil, errors.New("dns.fake-ip-range must be a IPv4 prefix")
1424+
}
14201425
}
14211426

14221427
if cfg.FakeIPRange6 != "" {
14231428
dnsCfg.FakeIPRange6, err = netip.ParsePrefix(cfg.FakeIPRange6)
14241429
if err != nil {
14251430
return nil, err
14261431
}
1432+
if !dnsCfg.FakeIPRange6.Addr().Is6() {
1433+
return nil, errors.New("dns.fake-ip-range6 must be a IPv6 prefix")
1434+
}
14271435
}
14281436

14291437
if cfg.EnhancedMode == C.DNSFakeIP {
@@ -1538,17 +1546,20 @@ func parseAuthentication(rawRecords []string) []auth.AuthUser {
15381546
return users
15391547
}
15401548

1549+
func parseIPV6(rawCfg *RawConfig) {
1550+
if !rawCfg.IPv6 || !verifyIP6() {
1551+
rawCfg.DNS.FakeIPRange6 = ""
1552+
rawCfg.Tun.Inet6Address = nil
1553+
}
1554+
}
1555+
15411556
func parseTun(rawTun RawTun, dns *DNS, general *General) error {
15421557
tunAddressPrefix := dns.FakeIPRange
1543-
if !tunAddressPrefix.IsValid() || !tunAddressPrefix.Addr().Is4() {
1558+
if !tunAddressPrefix.IsValid() {
15441559
tunAddressPrefix = netip.MustParsePrefix("198.18.0.1/16")
15451560
}
15461561
tunAddressPrefix = netip.PrefixFrom(tunAddressPrefix.Addr(), 30)
15471562

1548-
if !general.IPv6 || !verifyIP6() {
1549-
rawTun.Inet6Address = nil
1550-
}
1551-
15521563
general.Tun = LC.Tun{
15531564
Enable: rawTun.Enable,
15541565
Device: rawTun.Device,

0 commit comments

Comments
 (0)