diff options
author | 2013-10-29 21:44:50 +0000 | |
---|---|---|
committer | 2013-10-29 21:44:50 +0000 | |
commit | 0113927ba0d81e287033bbe442c4193bcfb3ae3f (patch) | |
tree | fa974d4a0c8d065c98d50aec24181bd9d5506b3c | |
parent | remove left over bits of omrt6msg, and cleanup the yucky (diff) | |
download | wireguard-openbsd-0113927ba0d81e287033bbe442c4193bcfb3ae3f.tar.xz wireguard-openbsd-0113927ba0d81e287033bbe442c4193bcfb3ae3f.zip |
unbreak glxsb(4) by properly allocating it's key schedule;
reduce pctr.h usage while here. ok jsing, deraadt
-rw-r--r-- | sys/arch/i386/pci/glxsb.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/sys/arch/i386/pci/glxsb.c b/sys/arch/i386/pci/glxsb.c index dacb500c1ac..2f4225f06a8 100644 --- a/sys/arch/i386/pci/glxsb.c +++ b/sys/arch/i386/pci/glxsb.c @@ -1,4 +1,4 @@ -/* $OpenBSD: glxsb.c,v 1.26 2013/08/25 22:50:04 mikeb Exp $ */ +/* $OpenBSD: glxsb.c,v 1.27 2013/10/29 21:44:50 mikeb Exp $ */ /* * Copyright (c) 2006 Tom Cosgrove <tom@openbsd.org> @@ -32,7 +32,7 @@ #include <sys/timeout.h> #include <machine/bus.h> -#include <machine/pctr.h> +#include <machine/cpufunc.h> #include <dev/rndvar.h> #include <dev/pci/pcivar.h> @@ -398,15 +398,25 @@ glxsb_crypto_newsession(uint32_t *sidp, struct cryptoini *cri) case CRYPTO_AES_CBC: if (c->cri_klen != 128) { - swd = malloc(sizeof(struct swcr_data), M_CRYPTO_DATA, - M_NOWAIT|M_ZERO); + swd = malloc(sizeof(struct swcr_data), + M_CRYPTO_DATA, M_NOWAIT|M_ZERO); if (swd == NULL) { glxsb_crypto_freesession(sesn); return (ENOMEM); } ses->ses_swd_enc = swd; txf = &enc_xform_rijndael128; - if (txf->setkey(&(swd->sw_kschedule), c->cri_key, + if (txf->ctxsize > 0) { + swd->sw_kschedule = + malloc(txf->ctxsize, + M_CRYPTO_DATA, + M_NOWAIT|M_ZERO); + if (swd->sw_kschedule == NULL) { + glxsb_crypto_freesession(sesn); + return (EINVAL); + } + } + if (txf->setkey(swd->sw_kschedule, c->cri_key, c->cri_klen / 8) < 0) { glxsb_crypto_freesession(sesn); return (EINVAL); |