Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iifWy-0000SQ-UK for pgsql-bugs@arkaria.postgresql.org; Sat, 21 Dec 2019 14:14:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.89) (envelope-from ) id 1iifWw-0005DD-5H for pgsql-bugs@arkaria.postgresql.org; Sat, 21 Dec 2019 14:14:54 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1iifWv-0005D5-MU for pgsql-bugs@lists.postgresql.org; Sat, 21 Dec 2019 14:14:53 +0000 Received: from mail-ot1-x341.google.com ([2607:f8b0:4864:20::341]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1iifWp-0007El-HK for pgsql-bugs@lists.postgresql.org; Sat, 21 Dec 2019 14:14:53 +0000 Received: by mail-ot1-x341.google.com with SMTP id c22so15771236otj.13 for ; Sat, 21 Dec 2019 06:14:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=joeconway.com; s=google; h=subject:to:cc:references:from:autocrypt:message-id:date:user-agent :mime-version:in-reply-to; bh=VfJSccgk4ZcZVIjt204Vjbqu6IGdSvP6Cl66/k+DWYE=; b=D7vbIcuAjbFe6T4eUpBvWNyuUPo9pd5IuwpPJpSTwdUc2ThRDw5UytY3+RDG73DmPb 8TWowYGrTIkTF4d676hOZ49kogpR2oCpVMPWANXe5m4jsExKO4/1qi553Mioinv/h31q Y0r1CFdf3mye8Mear6Px5U31sZNdA5FGNe/XHwSvH3NSkug1F5yho/4xIPOOHI1hcMJX gdTcECjaa7DYEYt+J5Z8rk1cKD7nRwK9luALGne6KCwzQohlBMb/zdA43XPqV3OmtDql dD4uqmGCDQdpz5wyHxcVt/UDdlxGa4Syel7RsU4mwpwDTEihzf6+wXZp0YtRQnr4M8Aq go6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:cc:references:from:autocrypt :message-id:date:user-agent:mime-version:in-reply-to; bh=VfJSccgk4ZcZVIjt204Vjbqu6IGdSvP6Cl66/k+DWYE=; b=tBVLxMiipdBN0mHvaFnE9AAtdizmk2adABWpbXX2SPj3PMKnvkVBwyueWBVx7W9Whg q0a6EhP4TYID52QK2OVo5HZxTYIZGKOmNc33IWYfw+bRT46qztY0jZWz5P+WrGUcGnEa qkWcHOURnkEP1J51GaNyLmWN58dT+u6NzPvVLw/A0V76lYpBdR9p1unlLjJ49ZI5NpVS hwLZ8UqI6ONLLGjt09GtUURII3NHv43kptd3YrJgoa/88sX21J9MPAllaRYNp41/vBiG YKYPmw0FsOOO14HnJZDOL00Wdk5AKNjcSNhCUF2pHZ2N9IxnVpjwZl2wTRgKIrqbxBo5 cDGA== X-Gm-Message-State: APjAAAXfa9+HXRFLD49jbbTXTmksYdrc8O3lP4SiqTBSLeuAYiOPX0dd AGPwtG1C/rp83ZTEfRQeq4xQa6+6EeWGXm9cBVIciWpI16cT6R7mo5nWbSVeKYcgIeoQg/vVbQx O6alE/DDFbJRdhvmeToKiT446AWuCHxZnJ3cBV11oUzLQ7WtuL7YkAjOSwkpJ271v+etL6WYKm7 kSrA== X-Google-Smtp-Source: APXvYqzoR1GWfKVwe6wD8o7mVakEPTeXCPnapX0YbSgx7mrCQdwZuDQAOTRcwFGoOmc9NDkArIm6+A== X-Received: by 2002:a05:6830:1f19:: with SMTP id u25mr21718921otg.170.1576937685410; Sat, 21 Dec 2019 06:14:45 -0800 (PST) Received: from [192.168.4.41] ([72.17.18.98]) by smtp.gmail.com with ESMTPSA id r23sm4347654oij.38.2019.12.21.06.14.44 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 21 Dec 2019 06:14:44 -0800 (PST) Subject: Re: BUG #16176: NULL value returned by category_sql argument to crosstab() causes segmentation fault To: Tom Lane , ipluta@wp.pl Cc: pgsql-bugs@lists.postgresql.org References: <16176-7489719b05e4303c@postgresql.org> <8638.1576864859@sss.pgh.pa.us> From: Joe Conway Autocrypt: addr=mail@joeconway.com; keydata= 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 Message-ID: <8d8ef71e-a347-67be-696a-3bdd259ec9fb@joeconway.com> Date: Sat, 21 Dec 2019 09:14:41 -0500 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.2.2 MIME-Version: 1.0 In-Reply-To: <8638.1576864859@sss.pgh.pa.us> Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="RcZDuvVGGpwDnfF3syHTJYhzPCwH4vgw3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --RcZDuvVGGpwDnfF3syHTJYhzPCwH4vgw3 Content-Type: multipart/mixed; boundary="sUtzpf2fIq4kH7TgxyHMcUEQHZ4l9ozIE" --sUtzpf2fIq4kH7TgxyHMcUEQHZ4l9ozIE Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: quoted-printable On 12/20/19 1:00 PM, Tom Lane wrote: > PG Bug reporting form writes: >> -- this will crash pg12, but not version() < 12 - note NULL value = in >> categories query: >> select * from crosstab ('values (1, 2, 12), (1, 3, 13), (2, 2, 22)= , (2, >> 3, 23), (3, 2, 32), (3, 3, 33) order by 1, 2, 3', 'values (2), (null)'= ) as >> rr (a int, "2" int, "3" int); >=20 > Yeah, duplicated here. It seems tablefunc is passing a NULL string > pointer to sprintf(). Previously, that would work on some platforms > and crash on others --- as of v12, it crashes everywhere. >=20 > What we need here is to figure out what the hashtab string key ought > to be for a NULL category. I suspect what was happening before > (on non-crashing platforms) was that you implicitly got "(nil)" > or some spelling like that, which is not great because it could > conflict with a valid user key. Alternatively, we could refuse > NULL category values ... not sure if that's desirable. >=20 > Anyway, this is *not* a new bug, it's just possible to hit it on > more platforms now. It appears that in pg11 (and presumably prior) when snprintf() is called it is resolved (here at least )to __GI___snprintf() which comes directly from libc. On my desktop machine the system snprintf() deals with a null pointer argument without crashing. I guess this is why the crash was platform dependent. In pg12 (and presumably master), it is resolved to our own port function pg_snprintf(), which in turn works its way to dopr(), where strlen() is called on a null pointer and "". Undoubtedly strlen() is a bit more consistent than snprintf() across platforms in this regard. =46rom what I can see, even on pg11 and prior, having a null category never did anything useful. And in the 16 years or so since this has been around, no one in my memory ever asked for that functionality, so I am inclined to refuse NULL category values unless someone wants to make a good case otherwise. Joe --=20 Crunchy Data - http://crunchydata.com PostgreSQL Support for Secure Enterprises Consulting, Training, & Open Source Development --sUtzpf2fIq4kH7TgxyHMcUEQHZ4l9ozIE-- --RcZDuvVGGpwDnfF3syHTJYhzPCwH4vgw3 Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEg14x9eymXoJyHrH+N/L3QzX32GUFAl3+KNEACgkQN/L3QzX3 2GVdTA//dmqPA5ufV52SnKXODe6T5Ai6lWp72mil3gblYTTQpmaifCOmj1Yb/LmP EX3FVFtW+juiQ9i2rUIsYRaE9N72J6UeXuvsjqgLb7Httjp+xHg3JCZM1CPPsxmf T3xi0MAW/B/IxnRMinmMewECxLN4MIZLUbIQeAbQwKIG1SzIHEVpFNoTNQvGXJiy tE6onLLt9Vg4+9RNXj3U3BIo+XfOe5qurpQzHmaZbZYRwh00yazUhcQxq38atZyS WgvI7gMevFQtPaiO9vhAFN/sZX823zh6hEQFraAJGGvRtQO2RjmiiVIbNN5Hdqa7 beBknlH+N1Qn9Uwir2jcJD8b2UrNhnUQKr/IG0o/l9cKM4hgBG6Zv9SfGiJwrxuR U7rmGAeFt6Y9jjbOx9mact+iu2j0cZXnlOz8ENsHjNnZoY0Q83KwwQVR/xBO2xY2 Ms1GPwffxXsmX7c3CEmS5M+2tlP5ENNZ7rMUru7sR9S0ktaXH5HpBN4SGocbUVhH HdSkJSbVA27HwzYwlPDRxsK7LKuQvSvmoAkg9NEjBTBXMYn0daLyUnRuU6SOW4uf 1/rPCpvgifVrQBDu4HkFw8xTkLYdXnBLmMshFo9gHeKtMKRVuB4QcO61b777xT81 0+6IeAb12K/cZggLYph6h19bbFS926OZ7i2cYx2ToZ9v3R166yg= =cKH9 -----END PGP SIGNATURE----- --RcZDuvVGGpwDnfF3syHTJYhzPCwH4vgw3--