os400: os400qc3.c: replace malloc by LIBSSH2_ALLOC or alloca where possible
diff --git a/src/os400qc3.c b/src/os400qc3.c
index 83ae11f..76c38ca 100644
--- a/src/os400qc3.c
+++ b/src/os400qc3.c
@@ -832,9 +832,9 @@
_libssh2_bn *rp;
asn1Element *rsapubkey;
asn1Element *subjpubkeyinfo;
- unsigned char *av = NULL;
- unsigned char *rv = NULL;
- char *keydbuf = NULL;
+ unsigned char *av;
+ unsigned char *rv;
+ char *keydbuf;
Qc3_Format_ALGD0400_T algd;
Qc3_Format_KEYD0200_T *keyd;
Qus_EC_t errcode;
@@ -879,9 +879,9 @@
return ret;
}
- av = (unsigned char *) malloc(a->length);
- rv = (unsigned char *) malloc(mp->length);
- keydbuf = malloc(sizeof *keyd +
+ av = (unsigned char *) alloca(a->length);
+ rv = (unsigned char *) alloca(mp->length);
+ keydbuf = alloca(sizeof *keyd +
subjpubkeyinfo->end - subjpubkeyinfo->header);
if (av && rv && keydbuf) {
@@ -921,12 +921,6 @@
}
asn1delete(subjpubkeyinfo);
_libssh2_bn_free(mp);
- if (av)
- free((char *) av);
- if (rv)
- free((char *) rv);
- if (keydbuf)
- free(keydbuf);
return ret;
}
@@ -1363,7 +1357,8 @@
}
static int
-pkcs1topkcs8(const unsigned char **data8, unsigned int *datalen8,
+pkcs1topkcs8(LIBSSH2_SESSION *session,
+ const unsigned char **data8, unsigned int *datalen8,
const unsigned char *data1, unsigned int datalen1)
{
asn1Element *prvk;
@@ -1385,7 +1380,7 @@
}
if (!pkcs8)
return -1;
- data = (unsigned char *) malloc(pkcs8->end - pkcs8->header);
+ data = (unsigned char *) LIBSSH2_ALLOC(session, pkcs8->end - pkcs8->header);
if (!data) {
asn1delete(pkcs8);
return -1;
@@ -1406,10 +1401,10 @@
unsigned int datalen8;
int ret;
- if (pkcs1topkcs8(&data8, &datalen8, data, datalen))
+ if (pkcs1topkcs8(session, &data8, &datalen8, data, datalen))
return -1;
ret = rsapkcs8privkey(session, data8, datalen8, passphrase, loadkeydata);
- free((char *) data8);
+ LIBSSH2_FREE(session, (char *) data8);
return ret;
}
@@ -1422,10 +1417,10 @@
unsigned int datalen8;
int ret;
- if (pkcs1topkcs8(&data8, &datalen8, data, datalen))
+ if (pkcs1topkcs8(session, &data8, &datalen8, data, datalen))
return -1;
ret = rsapkcs8pubkey(session, data8, datalen8, passphrase, loadkeydata);
- free((char *) data8);
+ LIBSSH2_FREE(session, (char *) data8);
return ret;
}
@@ -1498,7 +1493,7 @@
if (filesize <= 32768) { /* Limit to a reasonable size. */
datalen = filesize;
- data = (unsigned char *) malloc(datalen);
+ data = (unsigned char *) alloca(datalen);
if (data) {
fseek(fp, 0L, SEEK_SET);
fread(data, datalen, 1, fp);
@@ -1507,7 +1502,6 @@
if (ret)
ret = (*proc1)(session, data, datalen, passphrase,
loadkeydata);
- free((char *) data);
}
}
fclose(fp);