fix bug in bitvec resulting in all bits being set to 0xff
diff --git a/openbsc/src/bitvec.c b/openbsc/src/bitvec.c
index ad03958..d6f5679 100644
--- a/openbsc/src/bitvec.c
+++ b/openbsc/src/bitvec.c
@@ -104,12 +104,12 @@
 	if (bytenum >= bv->data_len)
 		return -EINVAL;
 
-	bitval = bitval2mask(ONE, bitnum);
-
 	/* first clear the bit */
-	bv->data[bytenum] &= ~(1 << bitnum);
+	bitval = bitval2mask(ONE, bitnum);
+	bv->data[bytenum] &= ~bitval;
 
 	/* then set it to desired value */
+	bitval = bitval2mask(bit, bitnum);
 	bv->data[bytenum] |= bitval;
 
 	return 0;