1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
From: Ramon Novoa <ramon.novoa@artica.es>
Description: Bugfix by in braa_EncodeShortBitstringOid (32 bit numbers in OIDs)
Applied-Upstream: https://github.com/mteg/braa/commit/7e1cab5e3fc359e91f4b6b3163ac795186032082
--- a/braaasn.c
+++ b/braaasn.c
@@ -56,7 +56,7 @@
buffer[2] = (v & 0x7f);
return(3);
}
- else
+ else if(! (v & 0xf0000000))
{
buffer[0] = ((v >> 21) & 0x7f) | 0x80;
buffer[1] = ((v >> 14) & 0x7f) | 0x80;
@@ -64,6 +64,15 @@
buffer[3] = (v & 0x7f);
return(4);
}
+ else
+ {
+ buffer[0] = ((v >> 28) & 0x7f) | 0x80;
+ buffer[1] = ((v >> 21) & 0x7f) | 0x80;
+ buffer[2] = ((v >> 14) & 0x7f) | 0x80;
+ buffer[3] = ((v >> 7) & 0x7f) | 0x80;
+ buffer[4] = (v & 0x7f);
+ return(5);
+ }
}
@@ -72,7 +81,7 @@
u_int32_t ret = 0;
int i;
- for(i = 0; i < 4 && i < max; i++)
+ for(i = 0; i < 5 && i < max; i++)
{
ret <<= 7;
ret |= data[i] & 0x7f;
--- a/braaoids.c
+++ b/braaoids.c
@@ -29,10 +29,10 @@
buffer[0] = 0;
for(i = 0; i<o->len; i++)
{
- unsigned char ib[12];
+ unsigned char ib[14];
int n;
- n = snprintf(ib, 10, ".%d", o->oid[i]);
+ n = snprintf(ib, 12, ".%d", o->oid[i]);
if((l + n + 1) < buffer_len)
sprintf(buffer, "%s%s", buffer, ib);
else
|