Replace some strtok() with strsep() strtok() considers adjacent delimiters to be one delimiter, which is arguably the wrong behavior in some cases. Replace with strsep(), which has the right behavior: Adjacent delimiters create an empty token.
Affected by this are parsing of: - Stored SCRAM secrets ("SCRAM-SHA-256$<iterations>:<salt>$<storedkey>:<serverkey>") - ICU collation attributes ("und@colStrength=primary;colCaseLevel=yes") for ICU older than version 54 - PG_COLORS environment variable ("error=01;31:warning=01;35:note=01;36:locus=01") - pg_regress command-line options with comma-separated list arguments (--dbname, --create-role) (currently only used pg_regress_ecpg) Reviewed-by: Kyotaro Horiguchi <horikyota....@gmail.com> Reviewed-by: David Steele <da...@pgmasters.net> Discussion: https://www.postgresql.org/message-id/flat/79692bf9-17d3-41e6-b9c9-fc8c39442...@eisentraut.org Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/5d2e1cc117b38db6bb5dc2e9ae9115304571ac70 Modified Files -------------- src/backend/libpq/auth-scram.c | 11 +++++------ src/backend/utils/adt/pg_locale.c | 3 ++- src/common/logging.c | 4 +++- src/test/regress/pg_regress.c | 5 ++--- 4 files changed, 12 insertions(+), 11 deletions(-)