Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/crypto/external/bsd/openssh/dist



> +	const BIGNUM *pub_key;
> +	if ((r = dh_gen_key(kex->dh, kex->we_need * 8)) != 0)
> +		goto out;
> +	DH_get0_key(kex->dh, &pub_key, NULL);
> +	if ((r = sshpkt_start(ssh, SSH2_MSG_KEX_DH_GEX_INIT)) != 0 ||
> +	    (r = sshpkt_put_bignum2(ssh, pub_key)) != 0 ||
> +	    (r = sshpkt_send(ssh)) != 0) {
>  		goto out;
> +	}
> +	}
>  	debug("SSH2_MSG_KEX_DH_GEX_INIT sent");
>  #ifdef DEBUG_KEXDH
>  	DHparams_print_fp(stderr, kex->dh);
> @@ -134,10 +140,12 @@ input_kex_dh_gex_group(int type, u_int32
>  	ssh_dispatch_set(ssh, SSH2_MSG_KEX_DH_GEX_REPLY, &input_kex_dh_gex_reply);
>  	r = 0;
>  out:
> -	if (p)
> +	if (r != 0) {
>  		BN_clear_free(p);
> -	if (g)
>  		BN_clear_free(g);
> +		DH_free(kex->dh);
> +		kex->dh = NULL;
> +	}
>  	return r;

BN_clear_free will null deref on this error path I think


Home | Main Index | Thread Index | Old Index