postgres.git / summary / log / commit / refs

commit    a0c2fa9b5cfaf9595e8809a68eec929a5052834e
Author:   Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date:     Thu Mar 06 19:19:00 2014 +0000
First released in: 9.4.0

    isdigit() needs an unsigned char argument.
    
    Per the C standard, the routine should be passed an int, with a value that's
    representable as an unsigned char or EOF. Passing a signed char is wrong,
    because a negative value is not representable as an unsigned char.
    Unfortunately no compiler warns about that.


src/backend/utils/adt/timestamp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/backend/utils/adt/timestamp.c b/src/backend/utils/adt/timestamp.c index 8ba3209fda5..ce30bb6e9fa 100644 --- a/src/backend/utils/adt/timestamp.c +++ b/src/backend/utils/adt/timestamp.c @@ -511,7 +511,7 @@ parse_sane_timezone(struct pg_tm *tm, text *zone) * as invalid, it's enough to disallow having a digit in the first * position of our input string. */ - if (isdigit(*tzname)) + if (isdigit((unsigned char) *tzname)) ereport(ERROR, (errcode(ERRCODE_INVALID_PARAMETER_VALUE), errmsg("invalid input syntax for numeric time zone: \"%s\"", [parent: 94ae6ba74dfc]