version 1.119, 2016/09/06 09:14:05 |
version 1.120, 2016/09/12 01:22:38 |
|
|
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
*/ |
|
|
#include <sys/param.h> /* MAX roundup */ |
|
|
|
#include <signal.h> |
#include <signal.h> |
#include <stdio.h> |
#include <stdio.h> |
|
|
need = dh_need = 0; |
need = dh_need = 0; |
for (mode = 0; mode < MODE_MAX; mode++) { |
for (mode = 0; mode < MODE_MAX; mode++) { |
newkeys = kex->newkeys[mode]; |
newkeys = kex->newkeys[mode]; |
need = MAX(need, newkeys->enc.key_len); |
need = MAXIMUM(need, newkeys->enc.key_len); |
need = MAX(need, newkeys->enc.block_size); |
need = MAXIMUM(need, newkeys->enc.block_size); |
need = MAX(need, newkeys->enc.iv_len); |
need = MAXIMUM(need, newkeys->enc.iv_len); |
need = MAX(need, newkeys->mac.key_len); |
need = MAXIMUM(need, newkeys->mac.key_len); |
dh_need = MAX(dh_need, cipher_seclen(newkeys->enc.cipher)); |
dh_need = MAXIMUM(dh_need, cipher_seclen(newkeys->enc.cipher)); |
dh_need = MAX(dh_need, newkeys->enc.block_size); |
dh_need = MAXIMUM(dh_need, newkeys->enc.block_size); |
dh_need = MAX(dh_need, newkeys->enc.iv_len); |
dh_need = MAXIMUM(dh_need, newkeys->enc.iv_len); |
dh_need = MAX(dh_need, newkeys->mac.key_len); |
dh_need = MAXIMUM(dh_need, newkeys->mac.key_len); |
} |
} |
/* XXX need runden? */ |
/* XXX need runden? */ |
kex->we_need = need; |
kex->we_need = need; |
|
|
|
|
if ((mdsz = ssh_digest_bytes(kex->hash_alg)) == 0) |
if ((mdsz = ssh_digest_bytes(kex->hash_alg)) == 0) |
return SSH_ERR_INVALID_ARGUMENT; |
return SSH_ERR_INVALID_ARGUMENT; |
if ((digest = calloc(1, roundup(need, mdsz))) == NULL) { |
if ((digest = calloc(1, ROUNDUP(need, mdsz))) == NULL) { |
r = SSH_ERR_ALLOC_FAIL; |
r = SSH_ERR_ALLOC_FAIL; |
goto out; |
goto out; |
} |
} |