mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-17 14:07:03 +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
aeee62593a
commit
7b1db7192e
13
g10/cpr.c
13
g10/cpr.c
@ -328,20 +328,15 @@ write_status_text_and_buffer (int no, const char *string,
|
|||||||
}
|
}
|
||||||
first = 0;
|
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
|
if (*s == '%' || *(const byte*)s <= lower_limit
|
||||||
|| *(const byte*)s == 127 )
|
|| *(const byte*)s == 127 )
|
||||||
esc = 1;
|
esc = 1;
|
||||||
if (wrap && ++count > wrap)
|
if (wrap && ++count > wrap)
|
||||||
{
|
dowrap=1;
|
||||||
dowrap=1;
|
if (esc || dowrap)
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
|
||||||
if (esc)
|
|
||||||
{
|
|
||||||
s--; n++;
|
|
||||||
}
|
}
|
||||||
if (s != buffer)
|
if (s != buffer)
|
||||||
es_fwrite (buffer, s-buffer, 1, statusfp);
|
es_fwrite (buffer, s-buffer, 1, statusfp);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user