From 513b59fa8875d77c86f122af4bb0cc547eb98c8f Mon Sep 17 00:00:00 2001 From: Notealot <714804968@qq.com> Date: Wed, 27 Oct 2021 00:19:06 +0800 Subject: [PATCH] rationalize return logic in validateHeader() --- gin.go | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/gin.go b/gin.go index bee42dee..73f71a3c 100644 --- a/gin.go +++ b/gin.go @@ -416,24 +416,23 @@ func (engine *Engine) isTrustedProxy(ip net.IP) bool { } func (engine *Engine) validateHeader(header string) (clientIP string, valid bool) { - if header == "" { - return "", false - } - items := strings.Split(header, ",") - for i := len(items) - 1; i >= 0; i-- { - ipStr := strings.TrimSpace(items[i]) - ip := net.ParseIP(ipStr) - if ip == nil { - return "", false - } + if header != "" { + items := strings.Split(header, ",") + for i := len(items) - 1; i >= 0; i-- { + ipStr := strings.TrimSpace(items[i]) + ip := net.ParseIP(ipStr) + if ip == nil { + return "", false + } - // X-Forwarded-For is appended by proxy - // Check IPs in reverse order and stop when find untrusted proxy - if (i == 0) || (!engine.isTrustedProxy(ip)) { - return ipStr, true + // X-Forwarded-For is appended by proxy + // Check IPs in reverse order and stop when find untrusted proxy + if (i == 0) || (!engine.isTrustedProxy(ip)) { + return ipStr, true + } } } - return + return "", false } // parseTrustedProxies parse Engine.trustedProxies to Engine.trustedCIDRs