xkb: Escape non-printable characters correctly.

XkbStringText escapes non-printable characters using octal numbers. Such escape
sequence would be at most 5 characters long ("\0123"), so it reserves 5 bytes
in the buffer. Due to char->unsigned int conversion, it would print much longer
string for negative numbers.

Reviewed-by: Keith Packard <keithp@keithp.com>
Signed-off-by: Julien Cristau <jcristau@debian.org>
This commit is contained in:
Michal Srb 2017-07-27 11:54:26 +02:00 committed by Julien Cristau
parent b95f25af14
commit eaf1f72ed8
1 changed files with 1 additions and 1 deletions

View File

@ -603,7 +603,7 @@ XkbStringText(char *str, unsigned format)
}
else {
*out++ = '0';
sprintf(out, "%o", *in);
sprintf(out, "%o", (unsigned char) *in);
while (*out != '\0')
out++;
}