From ecb9bd747e06c43d9ff189edd648f51022ed3c89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89mile=20R=C3=A9?= Date: Mon, 11 May 2026 20:04:54 +0400 Subject: [PATCH] Fix empty country code stored in consent records MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When IP geolocation returned no matching CIDR block, LookupCountryByIP returned an empty string with nil error. The handler took the address of that empty string, producing a non-nil pointer to "", which was inserted into the database. Guard against this by returning nil when the resolved country code is empty, and backfill existing rows with a migration. Signed-off-by: Émile Ré --- pkg/coredata/migrations/20260511T160400Z.sql | 17 +++++++++++++++++ pkg/server/api/cookiebanner/v1/handler.go | 4 ++++ 2 files changed, 21 insertions(+) create mode 100644 pkg/coredata/migrations/20260511T160400Z.sql diff --git a/pkg/coredata/migrations/20260511T160400Z.sql b/pkg/coredata/migrations/20260511T160400Z.sql new file mode 100644 index 000000000..987edd27a --- /dev/null +++ b/pkg/coredata/migrations/20260511T160400Z.sql @@ -0,0 +1,17 @@ +-- Copyright (c) 2026 Probo Inc . +-- +-- Permission to use, copy, modify, and/or distribute this software for any +-- purpose with or without fee is hereby granted, provided that the above +-- copyright notice and this permission notice appear in all copies. +-- +-- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +-- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +-- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +-- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +-- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +-- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +-- PERFORMANCE OF THIS SOFTWARE. + +UPDATE cookie_consent_records +SET country_code = NULL +WHERE country_code = ''; diff --git a/pkg/server/api/cookiebanner/v1/handler.go b/pkg/server/api/cookiebanner/v1/handler.go index 1de0d98fa..8cad5f738 100644 --- a/pkg/server/api/cookiebanner/v1/handler.go +++ b/pkg/server/api/cookiebanner/v1/handler.go @@ -108,6 +108,10 @@ func (h *Handler) resolveCountryCode(r *http.Request) *coredata.CountryCode { return nil } + if cc == "" { + return nil + } + return &cc }