From: Peter Eisentraut Date: Mon, 5 Jan 2026 09:50:27 +0000 (+0100) Subject: Separate read and write pointers in pg_saslprep X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de746e0d2a5856f162deed042420ca15e6683cdd;p=thirdparty%2Fpostgresql.git Separate read and write pointers in pg_saslprep Use separate pointers for reading const input ('p') and writing to mutable output ('outp'), avoiding the need to cast away const on the input parameter. Author: Bertrand Drouvot Discussion: https://postgr.es/m/aUQHy/MmWq7c97wK%40ip-10-97-1-34.eu-west-3.compute.internal --- diff --git a/src/common/saslprep.c b/src/common/saslprep.c index 04d5cca284d..2ad2cefc14f 100644 --- a/src/common/saslprep.c +++ b/src/common/saslprep.c @@ -1054,7 +1054,8 @@ pg_saslprep(const char *input, char **output) int count; int i; bool contains_RandALCat; - unsigned char *p; + const unsigned char *p; + unsigned char *outp; char32_t *wp; /* Ensure we return *output as NULL on failure */ @@ -1087,7 +1088,7 @@ pg_saslprep(const char *input, char **output) if (!input_chars) goto oom; - p = (unsigned char *) input; + p = (const unsigned char *) input; for (i = 0; i < input_size; i++) { input_chars[i] = utf8_to_unicode(p); @@ -1217,14 +1218,14 @@ pg_saslprep(const char *input, char **output) * There are no error exits below here, so the error exit paths don't need * to worry about possibly freeing "result". */ - p = (unsigned char *) result; + outp = (unsigned char *) result; for (wp = output_chars; *wp; wp++) { - unicode_to_utf8(*wp, p); - p += pg_utf_mblen(p); + unicode_to_utf8(*wp, outp); + outp += pg_utf_mblen(outp); } - Assert((char *) p == result + result_size); - *p = '\0'; + Assert((char *) outp == result + result_size); + *outp = '\0'; FREE(input_chars); FREE(output_chars);