mirror of
https://github.com/postgres/postgres.git
synced 2026-01-26 09:41:40 +03:00
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 <bertranddrouvot.pg@gmail.com>
Discussion: https://postgr.es/m/aUQHy/MmWq7c97wK%40ip-10-97-1-34.eu-west-3.compute.internal
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user