postgres.git / summary / log / commit / refs

commit    70fc6c4ef3c3790284796db3935d6f2d040b60bd
Author:   Joe Conway <mail@joeconway.com>
Date:     Mon Dec 23 18:34:05 2019 +0000
First released in: 13.0, 9.4.26, 9.5.21, 9.6.17, 10.12, 11.7, 12.2

    Disallow null category in crosstab_hash
    
    While building a hash map of categories in load_categories_hash,
    resulting category names have not thus far been checked to ensure
    they are not null. Prior to pg12 null category names worked to the
    extent that they did not crash on some platforms. This is because
    those system libraries have an snprintf which can deal with being
    passed a null pointer argument for a string. But even in those cases
    null categories did nothing useful. And on some platforms it crashed.
    As of pg12, our own version of snprintf gets called, and it does
    not deal with null pointer arguments at all, and crashes consistently.
    
    Fix that by disallowing null categories. They never worked usefully,
    and no one has ever asked for them to work previously. Back-patch to
    all supported branches.
    
    Reported-By: Ireneusz Pluta
    Discussion: https://postgr.es/m/16176-7489719b05e4303c@postgresql.org


contrib/tablefunc/tablefunc.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/contrib/tablefunc/tablefunc.c b/contrib/tablefunc/tablefunc.c index cb1d029bf54..cb3bed0a0cd 100644 --- a/contrib/tablefunc/tablefunc.c +++ b/contrib/tablefunc/tablefunc.c @@ -763,6 +763,11 @@ load_categories_hash(char *cats_sql, MemoryContext per_query_ctx) /* get the category from the current sql result tuple */ catname = SPI_getvalue(spi_tuple, spi_tupdesc, 1); + if (catname == NULL) + ereport(ERROR, + (errcode(ERRCODE_SYNTAX_ERROR), + errmsg("provided \"categories\" SQL must " \ + "not return NULL values"))); SPIcontext = MemoryContextSwitchTo(per_query_ctx); [parent: 6609c3ad984b]