postgres.git / summary / log / commit / refs

commit    701a0bd56aa4c3091c7c92d235ada9ba7161e7e9
Author:   Michael Paquier <michael@paquier.xyz>
Date:     Wed Sep 03 03:54:31 2025 +0000
First released in: 14.20, 15.15, 16.11, 17.7, 18.0

    libpq: Fix PQtrace() format for non-printable characters
    
    PQtrace() was generating its output for non-printable characters without
    casting the characters printed with unsigned char, leading to some extra
    "\xffffff" generated in the output due to the fact that char may be
    signed.
    
    Oversights introduced by commit 198b3716dba6, so backpatch down to v14.
    
    Author: Ran Benita <ran@unusedvar.com>
    Discussion: https://postgr.es/m/a3383211-4539-459b-9d51-95c736ef08e0@app.fastmail.com
    Backpatch-through: 14


src/interfaces/libpq/fe-trace.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/interfaces/libpq/fe-trace.c b/src/interfaces/libpq/fe-trace.c index 402784f40e3..a181f8b7601 100644 --- a/src/interfaces/libpq/fe-trace.c +++ b/src/interfaces/libpq/fe-trace.c @@ -112,7 +112,7 @@ pqTraceOutputByte1(FILE *pfdebug, const char *data, int *cursor) * that completes ErrorResponse and NoticeResponse messages. */ if (!isprint((unsigned char) *v)) - fprintf(pfdebug, " \\x%02x", *v); + fprintf(pfdebug, " \\x%02x", (unsigned char) *v); else fprintf(pfdebug, " %c", *v); *cursor += 1; @@ -200,7 +200,7 @@ pqTraceOutputNchar(FILE *pfdebug, int len, const char *data, int *cursor) else { fwrite(v + next, 1, i - next, pfdebug); - fprintf(pfdebug, "\\x%02x", v[i]); + fprintf(pfdebug, "\\x%02x", (unsigned char) v[i]); next = i + 1; } } [parent: ec017a305bd4]