From 940bcee6fc2ec2483c0b6933828c83a15ac58c49 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Wed, 2 Nov 2016 15:02:10 +0100 Subject: [PATCH] - MmsValue_getNumberOfSetBits now deals with wrong padding --- src/mms/iso_mms/common/mms_value.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/mms/iso_mms/common/mms_value.c b/src/mms/iso_mms/common/mms_value.c index ee1ccd30..a52b9205 100644 --- a/src/mms/iso_mms/common/mms_value.c +++ b/src/mms/iso_mms/common/mms_value.c @@ -372,6 +372,23 @@ MmsValue_getNumberOfSetBits(const MmsValue* self) int i; for (i = 0; i < byteSize; i++) { + + /* deal with wrong padding */ + if (i == (byteSize - 1)) { + int paddingSize = (byteSize * 8) - self->value.bitString.size; + + uint8_t mask = 0; + + int k; + + for (k = 0; k < paddingSize; k++) + mask += (1 << k); + + mask = ~mask; + + self->value.bitString.buf[i] = (self->value.bitString.buf[i] & mask); + } + uint8_t currentByte = self->value.bitString.buf[i]; while (currentByte != 0) {