From a79ce64e82b484f58989f6cdb36b8219d929fa2a Mon Sep 17 00:00:00 2001 From: Timo Behrendt Date: Fri, 7 Nov 2025 17:14:14 +0100 Subject: [PATCH] fix(externalIpProvider/plain): when reading response body (#54) Fixing an error where the service crashes reading the response body, when no content-length header was provided in the response. Reviewed-on: https://gitea.t000-n.de/t.behrendt/realDynDNS/pulls/54 Reviewed-by: branch-buddy Co-authored-by: Timo Behrendt Co-committed-by: Timo Behrendt --- pkg/externalIpProvider/plain/plain.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/pkg/externalIpProvider/plain/plain.go b/pkg/externalIpProvider/plain/plain.go index 3fed9ad..cc0b112 100644 --- a/pkg/externalIpProvider/plain/plain.go +++ b/pkg/externalIpProvider/plain/plain.go @@ -2,6 +2,7 @@ package externalIpProvider import ( "errors" + "io" "net" "net/http" "net/url" @@ -40,12 +41,15 @@ func (p *ExternalIpProviderImplPlain) GetExternalIp() (net.IP, error) { } if res.StatusCode != 200 { + res.Body.Close() return nil, errors.New("unexpected status code") } - responseBody := make([]byte, res.ContentLength) - res.Body.Read(responseBody) - defer res.Body.Close() + responseBody, err := io.ReadAll(res.Body) + res.Body.Close() + if err != nil { + return nil, err + } parsedIp := net.ParseIP(string(responseBody)) if parsedIp == nil {