Remove custom memory allocation layer in pgcrypto

PX_OWN_ALLOC was intended as a way to disable the use of palloc(), and
over the time new palloc() or equivalent calls have been added like in
32984d8, making this extra layer losing its original purpose.  This
simplifies on the way some code paths to use palloc0() rather than
palloc() followed by memset(0).

Author: Daniel Gustafsson
Discussion: https://postgr.es/m/A5BFAA1A-B2E8-4CBC-895E-7B1B9475A527@yesql.se
This commit is contained in:
Michael Paquier 2020-09-25 10:25:55 +09:00
parent a45bc8a4f6
commit ca7f8e2b86
17 changed files with 106 additions and 143 deletions

View File

@ -478,7 +478,7 @@ mp_int_init(mp_int z)
mp_int
mp_int_alloc(void)
{
mp_int out = px_alloc(sizeof(mpz_t));
mp_int out = palloc(sizeof(mpz_t));
if (out != NULL)
mp_int_init(out);
@ -604,7 +604,7 @@ mp_int_free(mp_int z)
assert(z != NULL);
mp_int_clear(z);
px_free(z); /* note: NOT s_free() */
pfree(z); /* note: NOT s_free() */
}
mp_result
@ -2212,7 +2212,7 @@ static const mp_digit fill = (mp_digit) 0xdeadbeefabad1dea;
static mp_digit *
s_alloc(mp_size num)
{
mp_digit *out = px_alloc(num * sizeof(mp_digit));
mp_digit *out = palloc(num * sizeof(mp_digit));
assert(out != NULL);
@ -2235,7 +2235,7 @@ s_realloc(mp_digit *old, mp_size osize, mp_size nsize)
new[ix] = fill;
memcpy(new, old, osize * sizeof(mp_digit));
#else
mp_digit *new = px_realloc(old, nsize * sizeof(mp_digit));
mp_digit *new = repalloc(old, nsize * sizeof(mp_digit));
assert(new != NULL);
#endif
@ -2246,7 +2246,7 @@ s_realloc(mp_digit *old, mp_size osize, mp_size nsize)
static void
s_free(void *ptr)
{
px_free(ptr);
pfree(ptr);
}
static bool

View File

@ -85,8 +85,8 @@ int_sha224_free(PX_MD *h)
pg_sha224_ctx *ctx = (pg_sha224_ctx *) h->p.ptr;
px_memset(ctx, 0, sizeof(*ctx));
px_free(ctx);
px_free(h);
pfree(ctx);
pfree(h);
}
/* SHA256 */
@ -133,8 +133,8 @@ int_sha256_free(PX_MD *h)
pg_sha256_ctx *ctx = (pg_sha256_ctx *) h->p.ptr;
px_memset(ctx, 0, sizeof(*ctx));
px_free(ctx);
px_free(h);
pfree(ctx);
pfree(h);
}
/* SHA384 */
@ -181,8 +181,8 @@ int_sha384_free(PX_MD *h)
pg_sha384_ctx *ctx = (pg_sha384_ctx *) h->p.ptr;
px_memset(ctx, 0, sizeof(*ctx));
px_free(ctx);
px_free(h);
pfree(ctx);
pfree(h);
}
/* SHA512 */
@ -229,8 +229,8 @@ int_sha512_free(PX_MD *h)
pg_sha512_ctx *ctx = (pg_sha512_ctx *) h->p.ptr;
px_memset(ctx, 0, sizeof(*ctx));
px_free(ctx);
px_free(h);
pfree(ctx);
pfree(h);
}
/* init functions */
@ -240,8 +240,7 @@ init_sha224(PX_MD *md)
{
pg_sha224_ctx *ctx;
ctx = px_alloc(sizeof(*ctx));
memset(ctx, 0, sizeof(*ctx));
ctx = palloc0(sizeof(*ctx));
md->p.ptr = ctx;
@ -260,8 +259,7 @@ init_sha256(PX_MD *md)
{
pg_sha256_ctx *ctx;
ctx = px_alloc(sizeof(*ctx));
memset(ctx, 0, sizeof(*ctx));
ctx = palloc0(sizeof(*ctx));
md->p.ptr = ctx;
@ -280,8 +278,7 @@ init_sha384(PX_MD *md)
{
pg_sha384_ctx *ctx;
ctx = px_alloc(sizeof(*ctx));
memset(ctx, 0, sizeof(*ctx));
ctx = palloc0(sizeof(*ctx));
md->p.ptr = ctx;
@ -300,8 +297,7 @@ init_sha512(PX_MD *md)
{
pg_sha512_ctx *ctx;
ctx = px_alloc(sizeof(*ctx));
memset(ctx, 0, sizeof(*ctx));
ctx = palloc0(sizeof(*ctx));
md->p.ptr = ctx;

View File

@ -123,8 +123,8 @@ int_md5_free(PX_MD *h)
MD5_CTX *ctx = (MD5_CTX *) h->p.ptr;
px_memset(ctx, 0, sizeof(*ctx));
px_free(ctx);
px_free(h);
pfree(ctx);
pfree(h);
}
/* SHA1 */
@ -171,8 +171,8 @@ int_sha1_free(PX_MD *h)
SHA1_CTX *ctx = (SHA1_CTX *) h->p.ptr;
px_memset(ctx, 0, sizeof(*ctx));
px_free(ctx);
px_free(h);
pfree(ctx);
pfree(h);
}
/* init functions */
@ -182,8 +182,7 @@ init_md5(PX_MD *md)
{
MD5_CTX *ctx;
ctx = px_alloc(sizeof(*ctx));
memset(ctx, 0, sizeof(*ctx));
ctx = palloc0(sizeof(*ctx));
md->p.ptr = ctx;
@ -202,8 +201,7 @@ init_sha1(PX_MD *md)
{
SHA1_CTX *ctx;
ctx = px_alloc(sizeof(*ctx));
memset(ctx, 0, sizeof(*ctx));
ctx = palloc0(sizeof(*ctx));
md->p.ptr = ctx;
@ -246,9 +244,9 @@ intctx_free(PX_Cipher *c)
if (cx)
{
px_memset(cx, 0, sizeof *cx);
px_free(cx);
pfree(cx);
}
px_free(c);
pfree(c);
}
/*
@ -373,8 +371,7 @@ rj_load(int mode)
PX_Cipher *c;
struct int_ctx *cx;
c = px_alloc(sizeof *c);
memset(c, 0, sizeof *c);
c = palloc0(sizeof *c);
c->block_size = rj_block_size;
c->key_size = rj_key_size;
@ -384,8 +381,7 @@ rj_load(int mode)
c->decrypt = rj_decrypt;
c->free = intctx_free;
cx = px_alloc(sizeof *cx);
memset(cx, 0, sizeof *cx);
cx = palloc0(sizeof *cx);
cx->mode = mode;
c->ptr = cx;
@ -482,8 +478,7 @@ bf_load(int mode)
PX_Cipher *c;
struct int_ctx *cx;
c = px_alloc(sizeof *c);
memset(c, 0, sizeof *c);
c = palloc0(sizeof *c);
c->block_size = bf_block_size;
c->key_size = bf_key_size;
@ -493,8 +488,7 @@ bf_load(int mode)
c->decrypt = bf_decrypt;
c->free = intctx_free;
cx = px_alloc(sizeof *cx);
memset(cx, 0, sizeof *cx);
cx = palloc0(sizeof *cx);
cx->mode = mode;
c->ptr = cx;
return c;
@ -564,7 +558,7 @@ px_find_digest(const char *name, PX_MD **res)
for (p = int_digest_list; p->name; p++)
if (pg_strcasecmp(p->name, name) == 0)
{
h = px_alloc(sizeof(*h));
h = palloc(sizeof(*h));
p->init(h);
*res = h;

View File

@ -70,9 +70,9 @@ mbuf_free(MBuf *mbuf)
if (mbuf->own_data)
{
px_memset(mbuf->data, 0, mbuf->buf_end - mbuf->data);
px_free(mbuf->data);
pfree(mbuf->data);
}
px_free(mbuf);
pfree(mbuf);
return 0;
}
@ -88,7 +88,7 @@ prepare_room(MBuf *mbuf, int block_len)
newlen = (mbuf->buf_end - mbuf->data)
+ ((block_len + STEP + STEP - 1) & -STEP);
newbuf = px_realloc(mbuf->data, newlen);
newbuf = repalloc(mbuf->data, newlen);
mbuf->buf_end = newbuf + newlen;
mbuf->data_end = newbuf + (mbuf->data_end - mbuf->data);
@ -121,8 +121,8 @@ mbuf_create(int len)
if (!len)
len = 8192;
mbuf = px_alloc(sizeof *mbuf);
mbuf->data = px_alloc(len);
mbuf = palloc(sizeof *mbuf);
mbuf->data = palloc(len);
mbuf->buf_end = mbuf->data + len;
mbuf->data_end = mbuf->data;
mbuf->read_pos = mbuf->data;
@ -138,7 +138,7 @@ mbuf_create_from_data(uint8 *data, int len)
{
MBuf *mbuf;
mbuf = px_alloc(sizeof *mbuf);
mbuf = palloc(sizeof *mbuf);
mbuf->data = (uint8 *) data;
mbuf->buf_end = mbuf->data + len;
mbuf->data_end = mbuf->data + len;
@ -219,15 +219,14 @@ pullf_create(PullFilter **pf_p, const PullFilterOps *op, void *init_arg, PullFil
res = 0;
}
pf = px_alloc(sizeof(*pf));
memset(pf, 0, sizeof(*pf));
pf = palloc0(sizeof(*pf));
pf->buflen = res;
pf->op = op;
pf->priv = priv;
pf->src = src;
if (pf->buflen > 0)
{
pf->buf = px_alloc(pf->buflen);
pf->buf = palloc(pf->buflen);
pf->pos = 0;
}
else
@ -248,11 +247,11 @@ pullf_free(PullFilter *pf)
if (pf->buf)
{
px_memset(pf->buf, 0, pf->buflen);
px_free(pf->buf);
pfree(pf->buf);
}
px_memset(pf, 0, sizeof(*pf));
px_free(pf);
pfree(pf);
}
/* may return less data than asked, 0 means eof */
@ -386,15 +385,14 @@ pushf_create(PushFilter **mp_p, const PushFilterOps *op, void *init_arg, PushFil
res = 0;
}
mp = px_alloc(sizeof(*mp));
memset(mp, 0, sizeof(*mp));
mp = palloc0(sizeof(*mp));
mp->block_size = res;
mp->op = op;
mp->priv = priv;
mp->next = next;
if (mp->block_size > 0)
{
mp->buf = px_alloc(mp->block_size);
mp->buf = palloc(mp->block_size);
mp->pos = 0;
}
else
@ -415,11 +413,11 @@ pushf_free(PushFilter *mp)
if (mp->buf)
{
px_memset(mp->buf, 0, mp->block_size);
px_free(mp->buf);
pfree(mp->buf);
}
px_memset(mp, 0, sizeof(*mp));
px_free(mp);
pfree(mp);
}
void

View File

@ -156,7 +156,7 @@ digest_free(PX_MD *h)
OSSLDigest *digest = (OSSLDigest *) h->p.ptr;
free_openssl_digest(digest);
px_free(h);
pfree(h);
}
static int px_openssl_initialized = 0;
@ -214,7 +214,7 @@ px_find_digest(const char *name, PX_MD **res)
open_digests = digest;
/* The PX_MD object is allocated in the current memory context. */
h = px_alloc(sizeof(*h));
h = palloc(sizeof(*h));
h->result_size = digest_result_size;
h->block_size = digest_block_size;
h->reset = digest_reset;
@ -353,7 +353,7 @@ gen_ossl_free(PX_Cipher *c)
OSSLCipher *od = (OSSLCipher *) c->ptr;
free_openssl_cipher(od);
px_free(c);
pfree(c);
}
static int
@ -790,7 +790,7 @@ px_find_cipher(const char *name, PX_Cipher **res)
od->evp_ciph = i->ciph->cipher_func();
/* The PX_Cipher is allocated in current memory context */
c = px_alloc(sizeof(*c));
c = palloc(sizeof(*c));
c->block_size = gen_ossl_block_size;
c->key_size = gen_ossl_key_size;
c->iv_size = gen_ossl_iv_size;

View File

@ -67,8 +67,7 @@ pgp_cfb_create(PGP_CFB **ctx_p, int algo, const uint8 *key, int key_len,
return res;
}
ctx = px_alloc(sizeof(*ctx));
memset(ctx, 0, sizeof(*ctx));
ctx = palloc0(sizeof(*ctx));
ctx->ciph = ciph;
ctx->block_size = px_cipher_block_size(ciph);
ctx->resync = resync;
@ -85,7 +84,7 @@ pgp_cfb_free(PGP_CFB *ctx)
{
px_cipher_free(ctx->ciph);
px_memset(ctx, 0, sizeof(*ctx));
px_free(ctx);
pfree(ctx);
}
/*

View File

@ -57,13 +57,13 @@ struct ZipStat
static void *
z_alloc(void *priv, unsigned n_items, unsigned item_len)
{
return px_alloc(n_items * item_len);
return palloc(n_items * item_len);
}
static void
z_free(void *priv, void *addr)
{
px_free(addr);
pfree(addr);
}
static int
@ -80,8 +80,7 @@ compress_init(PushFilter *next, void *init_arg, void **priv_p)
/*
* init
*/
st = px_alloc(sizeof(*st));
memset(st, 0, sizeof(*st));
st = palloc0(sizeof(*st));
st->buf_len = ZIP_OUT_BUF;
st->stream.zalloc = z_alloc;
st->stream.zfree = z_free;
@ -93,7 +92,7 @@ compress_init(PushFilter *next, void *init_arg, void **priv_p)
res = deflateInit(&st->stream, ctx->compress_level);
if (res != Z_OK)
{
px_free(st);
pfree(st);
return PXE_PGP_COMPRESSION_ERROR;
}
*priv_p = st;
@ -174,7 +173,7 @@ compress_free(void *priv)
deflateEnd(&st->stream);
px_memset(st, 0, sizeof(*st));
px_free(st);
pfree(st);
}
static const PushFilterOps
@ -212,8 +211,7 @@ decompress_init(void **priv_p, void *arg, PullFilter *src)
&& ctx->compress_algo != PGP_COMPR_ZIP)
return PXE_PGP_UNSUPPORTED_COMPR;
dec = px_alloc(sizeof(*dec));
memset(dec, 0, sizeof(*dec));
dec = palloc0(sizeof(*dec));
dec->buf_len = ZIP_OUT_BUF;
*priv_p = dec;
@ -226,7 +224,7 @@ decompress_init(void **priv_p, void *arg, PullFilter *src)
res = inflateInit(&dec->stream);
if (res != Z_OK)
{
px_free(dec);
pfree(dec);
px_debug("decompress_init: inflateInit error");
return PXE_PGP_COMPRESSION_ERROR;
}
@ -318,7 +316,7 @@ decompress_free(void *priv)
inflateEnd(&dec->stream);
px_memset(dec, 0, sizeof(*dec));
px_free(dec);
pfree(dec);
}
static const PullFilterOps

View File

@ -211,7 +211,7 @@ pktreader_free(void *priv)
struct PktData *pkt = priv;
px_memset(pkt, 0, sizeof(*pkt));
px_free(pkt);
pfree(pkt);
}
static struct PullFilterOps pktreader_filter = {
@ -224,13 +224,13 @@ pgp_create_pkt_reader(PullFilter **pf_p, PullFilter *src, int len,
int pkttype, PGP_Context *ctx)
{
int res;
struct PktData *pkt = px_alloc(sizeof(*pkt));
struct PktData *pkt = palloc(sizeof(*pkt));
pkt->type = pkttype;
pkt->len = len;
res = pullf_create(pf_p, &pktreader_filter, pkt, src);
if (res < 0)
px_free(pkt);
pfree(pkt);
return res;
}
@ -447,8 +447,7 @@ mdcbuf_init(void **priv_p, void *arg, PullFilter *src)
PGP_Context *ctx = arg;
struct MDCBufData *st;
st = px_alloc(sizeof(*st));
memset(st, 0, sizeof(*st));
st = palloc0(sizeof(*st));
st->buflen = sizeof(st->buf);
st->ctx = ctx;
*priv_p = st;
@ -576,7 +575,7 @@ mdcbuf_free(void *priv)
px_md_free(st->ctx->mdc_ctx);
st->ctx->mdc_ctx = NULL;
px_memset(st, 0, sizeof(*st));
px_free(st);
pfree(st);
}
static struct PullFilterOps mdcbuf_filter = {

View File

@ -178,8 +178,7 @@ encrypt_init(PushFilter *next, void *init_arg, void **priv_p)
if (res < 0)
return res;
st = px_alloc(sizeof(*st));
memset(st, 0, sizeof(*st));
st = palloc0(sizeof(*st));
st->ciph = ciph;
*priv_p = st;
@ -219,7 +218,7 @@ encrypt_free(void *priv)
if (st->ciph)
pgp_cfb_free(st->ciph);
px_memset(st, 0, sizeof(*st));
px_free(st);
pfree(st);
}
static const PushFilterOps encrypt_filter = {
@ -241,7 +240,7 @@ pkt_stream_init(PushFilter *next, void *init_arg, void **priv_p)
{
struct PktStreamStat *st;
st = px_alloc(sizeof(*st));
st = palloc(sizeof(*st));
st->final_done = 0;
st->pkt_block = 1 << STREAM_BLOCK_SHIFT;
*priv_p = st;
@ -301,7 +300,7 @@ pkt_stream_free(void *priv)
struct PktStreamStat *st = priv;
px_memset(st, 0, sizeof(*st));
px_free(st);
pfree(st);
}
static const PushFilterOps pkt_stream_filter = {

View File

@ -60,10 +60,10 @@ mp_px_rand(uint32 bits, mpz_t *res)
int last_bits = bits & 7;
uint8 *buf;
buf = px_alloc(bytes);
buf = palloc(bytes);
if (!pg_strong_random(buf, bytes))
{
px_free(buf);
pfree(buf);
return PXE_NO_RANDOM;
}
@ -78,7 +78,7 @@ mp_px_rand(uint32 bits, mpz_t *res)
mp_int_read_unsigned(res, buf, bytes);
px_free(buf);
pfree(buf);
return 0;
}

View File

@ -44,7 +44,7 @@ pgp_mpi_alloc(int bits, PGP_MPI **mpi)
px_debug("pgp_mpi_alloc: unreasonable request: bits=%d", bits);
return PXE_PGP_CORRUPT_DATA;
}
n = px_alloc(sizeof(*n) + len);
n = palloc(sizeof(*n) + len);
n->bits = bits;
n->bytes = len;
n->data = (uint8 *) (n) + sizeof(*n);
@ -72,7 +72,7 @@ pgp_mpi_free(PGP_MPI *mpi)
if (mpi == NULL)
return 0;
px_memset(mpi, 0, sizeof(*mpi) + mpi->bytes);
px_free(mpi);
pfree(mpi);
return 0;
}

View File

@ -46,12 +46,12 @@ pad_eme_pkcs1_v15(uint8 *data, int data_len, int res_len, uint8 **res_p)
if (pad_len < 8)
return PXE_BUG;
buf = px_alloc(res_len);
buf = palloc(res_len);
buf[0] = 0x02;
if (!pg_strong_random(buf + 1, pad_len))
{
px_free(buf);
pfree(buf);
return PXE_NO_RANDOM;
}
@ -64,7 +64,7 @@ pad_eme_pkcs1_v15(uint8 *data, int data_len, int res_len, uint8 **res_p)
if (!pg_strong_random(p, 1))
{
px_memset(buf, 0, res_len);
px_free(buf);
pfree(buf);
return PXE_NO_RANDOM;
}
}
@ -97,7 +97,7 @@ create_secmsg(PGP_Context *ctx, PGP_MPI **msg_p, int full_bytes)
/*
* create "secret message"
*/
secmsg = px_alloc(klen + 3);
secmsg = palloc(klen + 3);
secmsg[0] = ctx->cipher_algo;
memcpy(secmsg + 1, ctx->sess_key, klen);
secmsg[klen + 1] = (cksum >> 8) & 0xFF;
@ -118,10 +118,10 @@ create_secmsg(PGP_Context *ctx, PGP_MPI **msg_p, int full_bytes)
if (padded)
{
px_memset(padded, 0, full_bytes);
px_free(padded);
pfree(padded);
}
px_memset(secmsg, 0, klen + 3);
px_free(secmsg);
pfree(secmsg);
if (res >= 0)
*msg_p = m;

View File

@ -39,8 +39,7 @@ pgp_key_alloc(PGP_PubKey **pk_p)
{
PGP_PubKey *pk;
pk = px_alloc(sizeof(*pk));
memset(pk, 0, sizeof(*pk));
pk = palloc0(sizeof(*pk));
*pk_p = pk;
return 0;
}
@ -78,7 +77,7 @@ pgp_key_free(PGP_PubKey *pk)
break;
}
px_memset(pk, 0, sizeof(*pk));
px_free(pk);
pfree(pk);
}
static int

View File

@ -200,8 +200,7 @@ pgp_init(PGP_Context **ctx_p)
{
PGP_Context *ctx;
ctx = px_alloc(sizeof *ctx);
memset(ctx, 0, sizeof *ctx);
ctx = palloc0(sizeof *ctx);
ctx->cipher_algo = def_cipher_algo;
ctx->s2k_cipher_algo = def_s2k_cipher_algo;
@ -226,7 +225,7 @@ pgp_free(PGP_Context *ctx)
if (ctx->pub_key)
pgp_key_free(ctx->pub_key);
px_memset(ctx, 0, sizeof *ctx);
px_free(ctx);
pfree(ctx);
return 0;
}

View File

@ -57,8 +57,7 @@ hmac_init(PX_HMAC *h, const uint8 *key, unsigned klen)
PX_MD *md = h->md;
bs = px_md_block_size(md);
keybuf = px_alloc(bs);
memset(keybuf, 0, bs);
keybuf = palloc0(bs);
if (klen > bs)
{
@ -76,7 +75,7 @@ hmac_init(PX_HMAC *h, const uint8 *key, unsigned klen)
}
px_memset(keybuf, 0, bs);
px_free(keybuf);
pfree(keybuf);
px_md_update(md, h->p.ipad, bs);
}
@ -108,7 +107,7 @@ hmac_finish(PX_HMAC *h, uint8 *dst)
bs = px_md_block_size(md);
hlen = px_md_result_size(md);
buf = px_alloc(hlen);
buf = palloc(hlen);
px_md_finish(md, buf);
@ -118,7 +117,7 @@ hmac_finish(PX_HMAC *h, uint8 *dst)
px_md_finish(md, dst);
px_memset(buf, 0, hlen);
px_free(buf);
pfree(buf);
}
static void
@ -131,9 +130,9 @@ hmac_free(PX_HMAC *h)
px_memset(h->p.ipad, 0, bs);
px_memset(h->p.opad, 0, bs);
px_free(h->p.ipad);
px_free(h->p.opad);
px_free(h);
pfree(h->p.ipad);
pfree(h->p.opad);
pfree(h);
}
@ -158,9 +157,9 @@ px_find_hmac(const char *name, PX_HMAC **res)
return PXE_HASH_UNUSABLE_FOR_HMAC;
}
h = px_alloc(sizeof(*h));
h->p.ipad = px_alloc(bs);
h->p.opad = px_alloc(bs);
h = palloc(sizeof(*h));
h->p.ipad = palloc(bs);
h->p.opad = palloc(bs);
h->md = md;
h->result_size = hmac_result_size;

View File

@ -196,8 +196,7 @@ combo_init(PX_Combo *cx, const uint8 *key, unsigned klen,
ivs = px_cipher_iv_size(c);
if (ivs > 0)
{
ivbuf = px_alloc(ivs);
memset(ivbuf, 0, ivs);
ivbuf = palloc0(ivs);
if (ivlen > ivs)
memcpy(ivbuf, iv, ivs);
else
@ -206,15 +205,15 @@ combo_init(PX_Combo *cx, const uint8 *key, unsigned klen,
if (klen > ks)
klen = ks;
keybuf = px_alloc(ks);
keybuf = palloc0(ks);
memset(keybuf, 0, ks);
memcpy(keybuf, key, klen);
err = px_cipher_init(c, keybuf, klen, ivbuf);
if (ivbuf)
px_free(ivbuf);
px_free(keybuf);
pfree(ivbuf);
pfree(keybuf);
return err;
}
@ -238,7 +237,7 @@ combo_encrypt(PX_Combo *cx, const uint8 *data, unsigned dlen,
/* encrypt */
if (bs > 1)
{
bbuf = px_alloc(bs * 4);
bbuf = palloc(bs * 4);
bpos = dlen % bs;
*rlen = dlen - bpos;
memcpy(bbuf, data + *rlen, bpos);
@ -283,7 +282,7 @@ combo_encrypt(PX_Combo *cx, const uint8 *data, unsigned dlen,
}
out:
if (bbuf)
px_free(bbuf);
pfree(bbuf);
return err;
}
@ -351,7 +350,7 @@ combo_free(PX_Combo *cx)
if (cx->cipher)
px_cipher_free(cx->cipher);
px_memset(cx, 0, sizeof(*cx));
px_free(cx);
pfree(cx);
}
/* PARSER */
@ -408,17 +407,14 @@ px_find_combo(const char *name, PX_Combo **res)
PX_Combo *cx;
cx = px_alloc(sizeof(*cx));
memset(cx, 0, sizeof(*cx));
buf = px_alloc(strlen(name) + 1);
strcpy(buf, name);
cx = palloc0(sizeof(*cx));
buf = pstrdup(name);
err = parse_cipher_name(buf, &s_cipher, &s_pad);
if (err)
{
px_free(buf);
px_free(cx);
pfree(buf);
pfree(cx);
return err;
}
@ -445,7 +441,7 @@ px_find_combo(const char *name, PX_Combo **res)
cx->decrypt_len = combo_decrypt_len;
cx->free = combo_free;
px_free(buf);
pfree(buf);
*res = cx;
@ -454,7 +450,7 @@ px_find_combo(const char *name, PX_Combo **res)
err1:
if (cx->cipher)
px_cipher_free(cx->cipher);
px_free(cx);
px_free(buf);
pfree(cx);
pfree(buf);
return PXE_NO_CIPHER;
}

View File

@ -37,19 +37,6 @@
/* keep debug messages? */
#define PX_DEBUG
/* a way to disable palloc
* - useful if compiled into standalone
*/
#ifndef PX_OWN_ALLOC
#define px_alloc(s) palloc(s)
#define px_realloc(p, s) repalloc(p, s)
#define px_free(p) pfree(p)
#else
void *px_alloc(size_t s);
void *px_realloc(void *p, size_t s);
void px_free(void *p);
#endif
/* max salt returned */
#define PX_MAX_SALT_LEN 128