File: 0002-Bugfix-by-in-braa_EncodeShortBitstringOid-32-bit-num.patch

package info (click to toggle)
braa 0.82-8
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 400 kB
  • sloc: ansic: 3,097; perl: 155; makefile: 12; sh: 10
file content (55 lines) | stat: -rw-r--r-- 1,234 bytes parent folder | download
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