From: Mark Wooding Date: Fri, 18 Oct 2019 21:45:01 +0000 (+0100) Subject: math/ec-exp.h: Fix segfault when base point is at infinity. X-Git-Tag: 2.4.5~18 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/catacomb/commitdiff_plain/b67c17c38e660bbf6f68e23f27af5a974a3b08ac?ds=inline math/ec-exp.h: Fix segfault when base point is at infinity. --- diff --git a/math/ec-exp.h b/math/ec-exp.h index 6cad7537..b393d7ec 100644 --- a/math/ec-exp.h +++ b/math/ec-exp.h @@ -37,9 +37,13 @@ #define EXP_TYPE ec #define EXP_COPY(d, p) do { \ - (d).x = MP_COPY((p).x); \ - (d).y = MP_COPY((p).y); \ - (d).z = (p).z ? MP_COPY((p).z) : MP_NEW; \ + if (EC_ATINF(&(p))) \ + (d).x = (d).y = (d).z = MP_NEW; \ + else { \ + (d).x = MP_COPY((p).x); \ + (d).y = MP_COPY((p).y); \ + (d).z = (p).z ? MP_COPY((p).z) : MP_NEW; \ + } \ } while (0) #define EXP_DROP(x) EC_DESTROY(&(x))