From: Tom Musta Date: Mon, 21 Apr 2014 20:54:55 +0000 (-0500) Subject: libdecnumber: Fix decNumberSetBCD X-Git-Tag: v2.1.0-rc0~53^2~131 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0a322e7e7cc25267fb4f900d4bc193a134cd72fe;p=thirdparty%2Fqemu.git libdecnumber: Fix decNumberSetBCD Fix a simple bug in the decNumberSetBCD() function. This function encodes a decNumber with "n" BCD digits. The original code erroneously computed the number of declets from the dn argument, which is the output decNumber value, and hence may contain garbage. Instead, the input "n" value is used. Signed-off-by: Tom Musta Signed-off-by: Alexander Graf --- diff --git a/libdecnumber/decNumber.c b/libdecnumber/decNumber.c index 6164a775092..a30632f94ec 100644 --- a/libdecnumber/decNumber.c +++ b/libdecnumber/decNumber.c @@ -3541,7 +3541,7 @@ uByte * decNumberGetBCD(const decNumber *dn, uint8_t *bcd) { /* and bcd[0] zero. */ /* ------------------------------------------------------------------ */ decNumber * decNumberSetBCD(decNumber *dn, const uByte *bcd, uInt n) { - Unit *up=dn->lsu+D2U(dn->digits)-1; /* -> msu [target pointer] */ + Unit *up = dn->lsu + D2U(n) - 1; /* -> msu [target pointer] */ const uByte *ub=bcd; /* -> source msd */ #if DECDPUN==1 /* trivial simple copy */