wincng.c: Fixed memory leak in case of an error during ASN.1 decoding

This commit is contained in:
Marc Hoersken 2014-05-18 14:58:21 +02:00
parent c32e82e97b
commit d63e32dd30

View File

@ -669,23 +669,24 @@ _libssh2_wincng_asn_decode_bns(unsigned char *pbEncoded,
break; break;
} }
if (ret) { if (!ret) {
*prpbDecoded = rpbDecoded;
*prcbDecoded = rcbDecoded;
*pcbCount = length;
} else {
for (length = 0; length < index; length++) { for (length = 0; length < index; length++) {
if (rpbDecoded[length]) { if (rpbDecoded[length]) {
free(rpbDecoded[length]); free(rpbDecoded[length]);
rpbDecoded[length] = NULL; rpbDecoded[length] = NULL;
} }
} }
} else { free(rpbDecoded);
*prpbDecoded = rpbDecoded; free(rcbDecoded);
*prcbDecoded = rcbDecoded;
*pcbCount = length;
} }
} else { } else {
free(rpbDecoded); free(rpbDecoded);
ret = -1; ret = -1;
} }
} else { } else {
ret = -1; ret = -1;
} }