1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-23 10:29:58 +01:00

* passphrase.c (agent_get_passphrase): Fixed signed/unsigned char

problem in %-escaping.  Noted by Ingo Kl�cker.
This commit is contained in:
Werner Koch 2002-10-04 06:02:14 +00:00
parent 79a68af367
commit 2e21d851e9
2 changed files with 16 additions and 10 deletions

View File

@ -1,3 +1,8 @@
2002-10-04 Werner Koch <wk@gnupg.org>
* passphrase.c (agent_get_passphrase): Fixed signed/unsigned char
problem in %-escaping. Noted by Ingo Klöcker.
2002-10-03 David Shaw <dshaw@jabberwocky.com> 2002-10-03 David Shaw <dshaw@jabberwocky.com>
* keylist.c (print_capabilities): Secret-parts-missing keys should * keylist.c (print_capabilities): Secret-parts-missing keys should

View File

@ -732,6 +732,7 @@ agent_get_passphrase ( u32 *keyid, int mode, const char *tryagain_text )
else else
{ /* The new Assuan protocol */ { /* The new Assuan protocol */
char *line, *p; char *line, *p;
const unsigned char *s;
int i; int i;
if (!tryagain_text) if (!tryagain_text)
@ -751,33 +752,33 @@ agent_get_passphrase ( u32 *keyid, int mode, const char *tryagain_text )
else else
*p++ = 'X'; /* no caching */ *p++ = 'X'; /* no caching */
*p++ = ' '; *p++ = ' ';
for (i=0; tryagain_text[i]; i++) for (i=0, s=tryagain_text; *s; s++)
{ {
if (tryagain_text[i] < ' ' || tryagain_text[i] == '+') if (*s < ' ' || *s == '+')
{ {
sprintf (p, "%%%02X", tryagain_text[i]); sprintf (p, "%%%02X", *s);
p += 3; p += 3;
} }
else if (tryagain_text[i] == ' ') else if (*s == ' ')
*p++ = '+'; *p++ = '+';
else else
*p++ = tryagain_text[i]; *p++ = *s;
} }
*p++ = ' '; *p++ = ' ';
*p++ = 'X'; /* Use the standard prompt */ *p++ = 'X'; /* Use the standard prompt */
*p++ = ' '; *p++ = ' ';
/* copy description */ /* copy description */
for (i=0; atext[i]; i++) for (i=0, s= atext; *s; s++)
{ {
if (atext[i] < ' ' || atext[i] == '+') if (*s < ' ' || *s == '+')
{ {
sprintf (p, "%%%02X", atext[i]); sprintf (p, "%%%02X", *s);
p += 3; p += 3;
} }
else if (atext[i] == ' ') else if (*s == ' ')
*p++ = '+'; *p++ = '+';
else else
*p++ = atext[i]; *p++ = *s;
} }
*p++ = '\n'; *p++ = '\n';
i = writen (fd, line, p - line); i = writen (fd, line, p - line);