X-Git-Url: https://asedeno.scripts.mit.edu/gitweb/?a=blobdiff_plain;f=sshdh.c;h=af7eaf8207f591041bdeeabf983a72a158890009;hb=812870d1b304d8f22633614f59c6690c05fcc029;hp=2e16bbea124e82695d04ecc150d3e386e7e00f27;hpb=db7196c174edf03a6e4ddbcfa22544c5d27d2e7c;p=PuTTY.git diff --git a/sshdh.c b/sshdh.c index 2e16bbea..af7eaf82 100644 --- a/sshdh.c +++ b/sshdh.c @@ -52,7 +52,7 @@ static void dh_init(struct dh_ctx *ctx) */ void *dh_setup_group1(void) { - struct dh_ctx *ctx = smalloc(sizeof(struct dh_ctx)); + struct dh_ctx *ctx = snew(struct dh_ctx); ctx->p = bignum_from_bytes(P, sizeof(P)); ctx->g = bignum_from_bytes(G, sizeof(G)); dh_init(ctx); @@ -64,7 +64,7 @@ void *dh_setup_group1(void) */ void *dh_setup_group(Bignum pval, Bignum gval) { - struct dh_ctx *ctx = smalloc(sizeof(struct dh_ctx)); + struct dh_ctx *ctx = snew(struct dh_ctx); ctx->p = copybn(pval); ctx->g = copybn(gval); dh_init(ctx); @@ -110,7 +110,7 @@ Bignum dh_create_e(void *handle, int nbits) unsigned char *buf; nbytes = ssh1_bignum_length(ctx->qmask); - buf = smalloc(nbytes); + buf = snewn(nbytes, unsigned char); do { /* @@ -123,7 +123,7 @@ Bignum dh_create_e(void *handle, int nbits) ssh1_write_bignum(buf, ctx->qmask); for (i = 2; i < nbytes; i++) buf[i] &= random_byte(); - ssh1_read_bignum(buf, &ctx->x); + ssh1_read_bignum(buf, nbytes, &ctx->x); /* can't fail */ } else { int b, nb; ctx->x = bn_power_2(nbits); @@ -140,6 +140,8 @@ Bignum dh_create_e(void *handle, int nbits) } } while (bignum_cmp(ctx->x, One) <= 0 || bignum_cmp(ctx->x, ctx->q) >= 0); + sfree(buf); + /* * Done. Now compute e = g^x mod p. */