From f32dd7b645090b85e1297f312c73353d93c83383 Mon Sep 17 00:00:00 2001 From: Bertrand Drouvot Date: Thu, 18 Dec 2025 12:17:21 +0000 Subject: [PATCH v1 3/3] 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. --- src/common/saslprep.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) 100.0% src/common/ diff --git a/src/common/saslprep.c b/src/common/saslprep.c index 101e8d65a4d..b215ab0bf8e 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); -- 2.34.1