mirror of
git://git.gnupg.org/gnupg.git
synced 2024-12-22 10:19:57 +01:00
g10: Fix garbled status messages in NOTATION_DATA
* g10/cpr.c (write_status_text_and_buffer): Fix off-by-one -- Depending on the escaping and line wrapping the computed remaining buffer length could be wrong. Fixed by always using a break to terminate the escape detection loop. Might have happened for all status lines which may wrap. GnuPG-bug-id: T6027
This commit is contained in:
parent
4dbef2addc
commit
34c649b360
13
g10/cpr.c
13
g10/cpr.c
@ -372,20 +372,15 @@ write_status_text_and_buffer (int no, const char *string,
|
||||
}
|
||||
first = 0;
|
||||
}
|
||||
for (esc=0, s=buffer, n=len; n && !esc; s++, n--)
|
||||
for (esc=0, s=buffer, n=len; n; s++, n--)
|
||||
{
|
||||
if (*s == '%' || *(const byte*)s <= lower_limit
|
||||
|| *(const byte*)s == 127 )
|
||||
esc = 1;
|
||||
if (wrap && ++count > wrap)
|
||||
{
|
||||
dowrap=1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (esc)
|
||||
{
|
||||
s--; n++;
|
||||
dowrap=1;
|
||||
if (esc || dowrap)
|
||||
break;
|
||||
}
|
||||
if (s != buffer)
|
||||
es_fwrite (buffer, s-buffer, 1, statusfp);
|
||||
|
Loading…
x
Reference in New Issue
Block a user