- fixed problem encoding OID with arc values 0

pull/228/head
Michael Zillgith 5 years ago
parent d798814fb4
commit 97e65d5743

@ -436,27 +436,33 @@ BerEncoder_encodeOIDToBuffer(const char* oidString, uint8_t* buffer, int maxBufL
int requiredBytes = 0; int requiredBytes = 0;
int val2 = val; if (val == 0) {
while (val2 > 0) { buffer[encodedBytes++] = 0;
requiredBytes++;
val2 = val2 >> 7;
} }
else {
int val2 = val;
while (val2 > 0) {
requiredBytes++;
val2 = val2 >> 7;
}
while (requiredBytes > 0) { while (requiredBytes > 0) {
val2 = val >> (7 * (requiredBytes - 1)); val2 = val >> (7 * (requiredBytes - 1));
val2 = val2 & 0x7f; val2 = val2 & 0x7f;
if (requiredBytes > 1) if (requiredBytes > 1)
val2 += 128; val2 += 128;
if (encodedBytes == maxBufLen) if (encodedBytes == maxBufLen)
return 0; return 0;
buffer[encodedBytes++] = (uint8_t) val2; buffer[encodedBytes++] = (uint8_t) val2;
requiredBytes--; requiredBytes--;
}
} }
} }
return encodedBytes; return encodedBytes;

Loading…
Cancel
Save