Merge branch 'jk/vreport-sanitize'
An error message with an ASCII control character like '\r' in it can alter the message to hide its early part, which is problematic when a remote side gives such an error message that the local side will relay with a "remote: " prefix. * jk/vreport-sanitize: vreport: sanitize ASCII control chars Revert "vreportf: avoid intermediate buffer"
This commit is contained in:
commit
daf75f2e6b
17
usage.c
17
usage.c
@ -7,21 +7,19 @@
|
||||
#include "cache.h"
|
||||
|
||||
static FILE *error_handle;
|
||||
static int tweaked_error_buffering;
|
||||
|
||||
void vreportf(const char *prefix, const char *err, va_list params)
|
||||
{
|
||||
char msg[4096];
|
||||
FILE *fh = error_handle ? error_handle : stderr;
|
||||
char *p;
|
||||
|
||||
fflush(fh);
|
||||
if (!tweaked_error_buffering) {
|
||||
setvbuf(fh, NULL, _IOLBF, 0);
|
||||
tweaked_error_buffering = 1;
|
||||
vsnprintf(msg, sizeof(msg), err, params);
|
||||
for (p = msg; *p; p++) {
|
||||
if (iscntrl(*p) && *p != '\t' && *p != '\n')
|
||||
*p = '?';
|
||||
}
|
||||
|
||||
fputs(prefix, fh);
|
||||
vfprintf(fh, err, params);
|
||||
fputc('\n', fh);
|
||||
fprintf(fh, "%s%s\n", prefix, msg);
|
||||
}
|
||||
|
||||
static NORETURN void usage_builtin(const char *err, va_list params)
|
||||
@ -93,7 +91,6 @@ void set_die_is_recursing_routine(int (*routine)(void))
|
||||
void set_error_handle(FILE *fh)
|
||||
{
|
||||
error_handle = fh;
|
||||
tweaked_error_buffering = 0;
|
||||
}
|
||||
|
||||
void NORETURN usagef(const char *err, ...)
|
||||
|
Loading…
Reference in New Issue
Block a user