Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vABdi-00FJen-K8 for pgsql-hackers@arkaria.postgresql.org; Sat, 18 Oct 2025 18:26:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1vABdh-008gJQ-Ef for pgsql-hackers@arkaria.postgresql.org; Sat, 18 Oct 2025 18:26:48 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1vABdh-008gJI-59 for pgsql-hackers@lists.postgresql.org; Sat, 18 Oct 2025 18:26:48 +0000 Received: from mail-oo1-xc2e.google.com ([2607:f8b0:4864:20::c2e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vABde-002UrA-1r for pgsql-hackers@postgresql.org; Sat, 18 Oct 2025 18:26:47 +0000 Received: by mail-oo1-xc2e.google.com with SMTP id 006d021491bc7-651c77805b9so1154543eaf.2 for ; Sat, 18 Oct 2025 11:26:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1760812004; x=1761416804; darn=postgresql.org; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:from:to:cc:subject:date:message-id:reply-to; bh=hOGSZhPydxPS0OzfvhL/qf3e5/DAFZoC0Gd3sNQh8Ko=; b=YtuRxkAiIK2cyn5lnlN0St0Buj2fmrtIcHemf0MR7qTCWPoVkWZ2tQepS14n3kbxdn Bfd5n6C+kAZ3csk5Cbu//N2/V7xsP1xUrRJ16O9X2EmNpnr9guGuZJ+/S4yvYtVzszXX JWHrLg2Pmh2rKCNgXXkKGv1hMf924V1o8WL1TsG3M+rrGJ0LRgP5SZ5YCBTTjL7QFEMp XDKdidZ7k4YPMz/BortsoHBBBVh+10WC8euz8GJULTPJ2I49sdZES1dl3oBUscqFO/Fg 9oaU7/UzoSr9dmYxPkQ6G2bWcjlaidX3jNHDltusTPFFs/UBQjWIEjx+1S3jhg9c/0aM ZrJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1760812004; x=1761416804; h=subject:from:to:content-language:user-agent:mime-version:date :message-id:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hOGSZhPydxPS0OzfvhL/qf3e5/DAFZoC0Gd3sNQh8Ko=; b=gI2bIcQ/9JlEnnfR6fdLPZKvBgeG1Jp6FGyZlNNifyGAmUL/aNXAdd9GvicYwtpkSQ RkgyfLHQ9sAnLJ/n2604v9OWqsUu/EFzWznroq8BNhC33g40n8TzMeSCE6R5HS/7iq0y 8YJmUOoe1xYkqf73gq5N37J+TPgLfNqWd40GxcJHUgzuH3K7mUG5WR45pQGBdh7XfK+/ 8Ei8efhOAD9Qrg0cl/HY/jUYwmJgJoVh51Orb7k5L883+WCmOn+wzBu1tmG5KmBKwX2S X50B4NHqNaseO4vkl6rW8wfyWkrtVAHU/ta7H4vEyyllqhDhzUQLeRimJN0temsb46dW haAw== X-Gm-Message-State: AOJu0YywnLBYkzdDEFkgfT/Lyx8+mQoTWGnccaynp/pR0OnGQ0vA1aiQ LYIQKgdSShnHBKA5WTaVjEg0f1P1RjYYHv1lsbk2MUOG1wlYPgsjrxGUOtbvQF1+prM= X-Gm-Gg: ASbGncuYLT7YcM27Y6/DGpA+GP1eXsJW0+fQ3GUQMJ5Dl+XI1di3vVZWOoTuskmV99Y 6qjbzEyc4m5CuSPGZ4XShnNo5YUBHNzPuivo0BHemRHFwJmsef4Z7o1hdoKmWG8XEK2nFQ2aE7a CXFcs0FH90UiGl4nQvZxTo937OwwdXVrHp+turw2mRjOB0TZAcRAr0zLSozi5NGe8dhkpqds3dt hSaKXQyutR3sRi+EN2gTBFVYc9MmT3EikKA32QnP+Y8QCKyHhjUQ8BrxdI7gt1MhX0sNq9a6tC7 deSCVKCn+3A2C0n8o00o+RbtCUgFVRHbFHbrQGM/K3fXQLzD6nxmXFCGUJCbMs4a6HQJjF2SKiq ahjnBjWzYry1QAoCHclu0WLdq1eHUcHnHn8jVpI9lYJ48lO0E1CMStVLIFV/mm8HH94nujaWouq vHIlcKUi1CqzgRiQtQvXg= X-Google-Smtp-Source: AGHT+IH1tkv4H1jGcoIQ8bZJADyOrXxY8RCqNbXwK/KSDLL3HX38SEJM2sz4zr8VmUClOg44SAb4uw== X-Received: by 2002:a05:6871:2b05:b0:346:6b6c:38a1 with SMTP id 586e51a60fabf-3c98d17b45cmr3358029fac.43.1760812003841; Sat, 18 Oct 2025 11:26:43 -0700 (PDT) Received: from [172.20.6.165] ([163.116.253.145]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-3c9af4426b5sm829064fac.25.2025.10.18.11.26.40 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 18 Oct 2025 11:26:41 -0700 (PDT) Content-Type: multipart/mixed; boundary="------------vAuQ01SwsXFYLViN0dNCMvcX" Message-ID: Date: Sat, 18 Oct 2025 13:26:40 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Content-Language: en-US To: pgsql-hackers@postgresql.org From: Bryan Green Subject: [PATCH] Fix POSIX compliance in pgwin32_unsetenv() List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------vAuQ01SwsXFYLViN0dNCMvcX Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit I noticed that pgwin32_unsetenv() in src/port/win32env.c lacks the input validation that its sibling function pgwin32_setenv() has (lines 126-132). Without these checks, the function will crash on NULL input via strlen(NULL), and will accept empty strings or strings containing '=' in violation of POSIX.1-2008. The attached patch adds the same validation that pgwin32_setenv already does, making the two functions consistent. This is purely defensive - it only affects callers passing invalid arguments. regards, Bryan Green --------------vAuQ01SwsXFYLViN0dNCMvcX Content-Type: text/plain; charset=UTF-8; name="0001-Fix-POSIX-compliance-in-pgwin32_unsetenv.patch" Content-Disposition: attachment; filename="0001-Fix-POSIX-compliance-in-pgwin32_unsetenv.patch" Content-Transfer-Encoding: base64 RnJvbSBkZGEwMmJlZjEyYTcyNWVmZjVlMzgzNjdmMmE1MjViMjM1NWMyOWQwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCcnlhbiBHcmVlbiA8ZGJyeWFuLmdyZWVuQGdtYWls LmNvbT4KRGF0ZTogU2F0LCAxOCBPY3QgMjAyNSAxMzowNDowNCAtMDUwMApTdWJqZWN0OiBb UEFUQ0hdIEZpeCBQT1NJWCBjb21wbGlhbmNlIGluIHBnd2luMzJfdW5zZXRlbnYoKQoKcGd3 aW4zMl91bnNldGVudigpIGxhY2tzIHRoZSBpbnB1dCB2YWxpZGF0aW9uIHRoYXQgaXRzIHNp YmxpbmcKcGd3aW4zMl9zZXRlbnYoKSBoYXMuICBBZGQgdGhlIHNhbWUgY2hlY2tzIGZvciBO VUxMLCBlbXB0eSBzdHJpbmcsCmFuZCAnPScgaW4gdGhlIG5hbWUgcGFyYW1ldGVyLCBwZXIg UE9TSVggcmVxdWlyZW1lbnRzLgoKV2l0aG91dCB0aGVzZSBjaGVja3MsIHVuc2V0ZW52KE5V TEwpIGNyYXNoZXMsIGFuZCBpbnZhbGlkIG5hbWVzCmFyZSBhY2NlcHRlZCB3aGVuIHRoZXkg c2hvdWxkIGZhaWwgd2l0aCBFSU5WQUwuCi0tLQogc3JjL3BvcnQvd2luMzJlbnYuYyB8IDcg KysrKysrKwogMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBh L3NyYy9wb3J0L3dpbjMyZW52LmMgYi9zcmMvcG9ydC93aW4zMmVudi5jCmluZGV4IGIyMmZi YWZkZTQuLmUxY2VlNjgzZGIgMTAwNjQ0Ci0tLSBhL3NyYy9wb3J0L3dpbjMyZW52LmMKKysr IGIvc3JjL3BvcnQvd2luMzJlbnYuYwpAQCAtMTUyLDYgKzE1MiwxMyBAQCBwZ3dpbjMyX3Vu c2V0ZW52KGNvbnN0IGNoYXIgKm5hbWUpCiAJaW50CQkJcmVzOwogCWNoYXIJICAgKmVudmJ1 ZjsKIAorCS8qIEVycm9yIGNvbmRpdGlvbnMsIHBlciBQT1NJWCAqLworCWlmIChuYW1lID09 IE5VTEwgfHwgbmFtZVswXSA9PSAnXDAnIHx8IHN0cmNocihuYW1lLCAnPScpICE9IE5VTEwp CisJeworCQllcnJubyA9IEVJTlZBTDsKKwkJcmV0dXJuIC0xOworCX0KKwogCWVudmJ1ZiA9 IChjaGFyICopIG1hbGxvYyhzdHJsZW4obmFtZSkgKyAyKTsKIAlpZiAoIWVudmJ1ZikKIAkJ cmV0dXJuIC0xOwotLSAKMi40OS4wCgo= --------------vAuQ01SwsXFYLViN0dNCMvcX--