Fix mem leak.
This commit is contained in:
parent
bfb71f3075
commit
6cf4420264
17
src/pem.c
17
src/pem.c
@ -65,6 +65,7 @@ int _libssh2_pem_parse (LIBSSH2_SESSION *session,
|
|||||||
char line[LINE_SIZE];
|
char line[LINE_SIZE];
|
||||||
char *b64data = NULL;
|
char *b64data = NULL;
|
||||||
unsigned int b64datalen = 0;
|
unsigned int b64datalen = 0;
|
||||||
|
int ret;
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
@ -89,7 +90,8 @@ int _libssh2_pem_parse (LIBSSH2_SESSION *session,
|
|||||||
b64datalen + linelen);
|
b64datalen + linelen);
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
{
|
{
|
||||||
return -1;
|
ret = -1;
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
memcpy (tmp + b64datalen, line, linelen);
|
memcpy (tmp + b64datalen, line, linelen);
|
||||||
b64data = tmp;
|
b64data = tmp;
|
||||||
@ -98,17 +100,24 @@ int _libssh2_pem_parse (LIBSSH2_SESSION *session,
|
|||||||
|
|
||||||
if (readline(line, LINE_SIZE, fp))
|
if (readline(line, LINE_SIZE, fp))
|
||||||
{
|
{
|
||||||
return -1;
|
ret = -1;
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
} while (strcmp (line, headerend) != 0);
|
} while (strcmp (line, headerend) != 0);
|
||||||
|
|
||||||
if (libssh2_base64_decode(session, data, datalen,
|
if (libssh2_base64_decode(session, data, datalen,
|
||||||
b64data, b64datalen))
|
b64data, b64datalen))
|
||||||
{
|
{
|
||||||
return -1;
|
ret = -1;
|
||||||
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
ret = 0;
|
||||||
|
out:
|
||||||
|
if (b64data) {
|
||||||
|
LIBSSH2_FREE (session, b64data);
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int read_asn1_length (const unsigned char *data,
|
static int read_asn1_length (const unsigned char *data,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user