Explorar o código

also clear bits in der_decode_raw_bit_string()

Steffen Jaeckel %!s(int64=8) %!d(string=hai) anos
pai
achega
3fef07c03e
Modificáronse 1 ficheiros con 3 adicións e 0 borrados
  1. 3 0
      src/pk/asn1/der/bit/der_decode_raw_bit_string.c

+ 3 - 0
src/pk/asn1/der/bit/der_decode_raw_bit_string.c

@@ -17,6 +17,7 @@
 #ifdef LTC_DER
 
 #define SETBIT(v, n)    (v=((unsigned char)(v) | (1U << (unsigned char)(n))))
+#define CLRBIT(v, n)    (v=((unsigned char)(v) & ~(1U << (unsigned char)(n))))
 
 /**
   Store a BIT STRING
@@ -86,6 +87,8 @@ int der_decode_raw_bit_string(const unsigned char *in,  unsigned long inlen,
    for (y = 0; y < blen; y++) {
        if (in[x] & (1 << (7 - (y & 7)))) {
           SETBIT(out[y/8], 7-(y%8));
+       } else {
+          CLRBIT(out[y/8], 7-(y%8));
        }
        if ((y & 7) == 7) {
           ++x;