diff options
author | Jason Wright <jason@cvs.openbsd.org> | 2002-05-02 19:03:36 +0000 |
---|---|---|
committer | Jason Wright <jason@cvs.openbsd.org> | 2002-05-02 19:03:36 +0000 |
commit | 50d39afcfacf1cbca6aac2aedeb1dc28b7de0038 (patch) | |
tree | 1b9168f859d2947b56564d979555eaff56de697b | |
parent | 516984a2b8ffb53cad243207ce558622b782fca0 (diff) |
the exponent parameter is:
1. byte counted (not word count * 4 counted)
2. not normalized (we don't normalize anything yet, so no biggy)
Increase maximum size of exponent to 2048 bits. (Better length checks coming soon)
-rw-r--r-- | sys/dev/pci/ubsec.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/sys/dev/pci/ubsec.c b/sys/dev/pci/ubsec.c index 5dc8b9ac5b4..b73485ce2c6 100644 --- a/sys/dev/pci/ubsec.c +++ b/sys/dev/pci/ubsec.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ubsec.c,v 1.94 2002/05/02 18:28:24 jason Exp $ */ +/* $OpenBSD: ubsec.c,v 1.95 2002/05/02 19:03:35 jason Exp $ */ /* * Copyright (c) 2000 Jason L. Wright (jason@thought.net) @@ -1822,7 +1822,7 @@ ubsec_kprocess_modexp(sc, krp) goto errout; } - if (ubsec_dma_malloc(sc, 1024 / 8, &me->me_E, 0)) { + if (ubsec_dma_malloc(sc, 2048 / 8, &me->me_E, 0)) { err = ENOMEM; goto errout; } @@ -1840,11 +1840,12 @@ ubsec_kprocess_modexp(sc, krp) } epb = (struct ubsec_pktbuf *)me->me_epb.dma_vaddr; - if (ubsec_kcopyin(&krp->krp_param[UBS_MODEXP_PAR_E], me->me_E.dma_vaddr, - 1024 / 8, &len)) { + len = (krp->krp_param[UBS_MODEXP_PAR_E].crp_nbits + 7) / 8; + if (len > me->me_E.dma_size) { err = EOPNOTSUPP; goto errout; } + bcopy(krp->krp_param[UBS_MODEXP_PAR_E].crp_p, me->me_E.dma_vaddr, len); epb->pb_addr = htole32(me->me_E.dma_paddr); epb->pb_next = 0; epb->pb_len = htole32(len); @@ -1894,7 +1895,8 @@ ubsec_kprocess_modexp(sc, krp) len = 512; ctx->me_len = htole16((len / 8) + (4 * sizeof(u_int16_t))); ctx->me_op = htole16(UBS_CTXOP_MODEXP); - ctx->me_E_len = htole16(((krp->krp_param[UBS_MODEXP_PAR_E].crp_nbits + 31) / 32) * 32); + ctx->me_E_len = + htole16(((krp->krp_param[UBS_MODEXP_PAR_E].crp_nbits + 7) / 8) * 8); ctx->me_N_len = htole16(len); #ifdef UBSEC_DEBUG |