Обсуждение: pgsql: Replace some strtok() with strsep()

Поиск
Список
Период
Сортировка

pgsql: Replace some strtok() with strsep()

От
Peter Eisentraut
Дата:
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.ntt@gmail.com>
Reviewed-by: David Steele <david@pgmasters.net>
Discussion: https://www.postgresql.org/message-id/flat/79692bf9-17d3-41e6-b9c9-fc8c3944222a@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(-)