scd: fix parsing login-data DO.

* scd/app-openpgp.c (parse_login_data): Release RELPTR.  Fix parsing.

--

Signed-off-by: NIIBE Yutaka
This commit is contained in:
NIIBE Yutaka 2013-08-27 10:23:09 +09:00
parent 54cbab29c7
commit b6d54f1196
1 changed files with 13 additions and 12 deletions

View File

@ -660,7 +660,11 @@ parse_login_data (app_t app)
if (*buffer == '\n')
break;
if (buflen < 2 || buffer[1] != '\x14')
return; /* No control sequences. */
{
xfree (relptr);
return; /* No control sequences. */
}
buflen--;
buffer++;
do
@ -707,14 +711,11 @@ parse_login_data (app_t app)
m = strtol (q, &q, 10);
}
buffer = q;
if (buflen < ((unsigned char *)q - buffer))
{
buflen = 0;
break;
}
else
buflen -= ((unsigned char *)q - buffer);
break;
buflen -= ((unsigned char *)q - buffer);
buffer = q;
if (buflen && !(*buffer == '\n' || *buffer == '\x18'))
goto next;
@ -725,11 +726,11 @@ parse_login_data (app_t app)
}
}
next:
for (; buflen && *buffer != '\x18'; buflen--, buffer++)
if (*buffer == '\n')
buflen = 1;
/* Skip to FS (0x18) or LF (\n). */
for (; buflen && *buffer != '\x18' && *buffer != '\n'; buflen--)
buffer++;
}
while (buflen);
while (buflen && *buffer != '\n');
xfree (relptr);
}