From: Michael Schroeder Date: Sun, 17 May 2020 16:10:14 +0000 (+0200) Subject: solv_pgpvrfy: split mpsetfrombe from mpbuild X-Git-Tag: 0.7.14~15 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=27a1f91486ae5d6bf422a859b47e626a406b3494;p=thirdparty%2Flibsolv.git solv_pgpvrfy: split mpsetfrombe from mpbuild --- diff --git a/ext/solv_pgpvrfy.c b/ext/solv_pgpvrfy.c index a5b8f830..accf369e 100644 --- a/ext/solv_pgpvrfy.c +++ b/ext/solv_pgpvrfy.c @@ -38,6 +38,19 @@ mpcpy(int len, mp_t *target, mp_t *source) memcpy(target, source, len * MP_T_BYTES); } +static void +mpsetfrombe(int len, mp_t *target, const unsigned char *buf, int bufl) +{ + int i, mpl = len * MP_T_BYTES; + buf += bufl; + if (bufl >= mpl) + bufl = mpl; + if (mpl) + memset(target, 0, mpl); + for (i = 0; bufl > 0; bufl--, i++) + target[i / MP_T_BYTES] |= (int)(*--buf) << (8 * (i % MP_T_BYTES)); +} + #if 0 static void mpdump(int l, mp_t *a, char *s) { @@ -350,20 +363,10 @@ static mp_t * mpbuild(const unsigned char *d, int dbits, int tbits, int *mplp) { int l = (tbits + MP_T_BITS - 1) / MP_T_BITS; - int dl, i; - mp_t *out = mpnew(l ? l : 1); if (mplp) *mplp = l; - dl = (dbits + 7) / 8; - d += dl; - if (dbits > tbits) - dl = (tbits + 7) / 8; - for (i = 0; dl > 0; dl--, i++) - { - int x = *--d; - out[i / MP_T_BYTES] |= x << (8 * (i % MP_T_BYTES)); - } + mpsetfrombe(l, out, d, (dbits + 7) / 8); return out; }