aboutsummaryrefslogtreecommitdiff
path: root/net-mgmt/net-snmp-devel/files/patch-asn1.c
diff options
context:
space:
mode:
Diffstat (limited to 'net-mgmt/net-snmp-devel/files/patch-asn1.c')
-rw-r--r--net-mgmt/net-snmp-devel/files/patch-asn1.c50
1 files changed, 48 insertions, 2 deletions
diff --git a/net-mgmt/net-snmp-devel/files/patch-asn1.c b/net-mgmt/net-snmp-devel/files/patch-asn1.c
index 477a909b07b9..8dc5fe0108d6 100644
--- a/net-mgmt/net-snmp-devel/files/patch-asn1.c
+++ b/net-mgmt/net-snmp-devel/files/patch-asn1.c
@@ -1,5 +1,5 @@
---- snmplib/asn1.c.orig Tue Jan 25 10:09:35 2005
-+++ snmplib/asn1.c Tue Jan 25 10:09:55 2005
+--- snmplib/asn1.c.orig.2 Sat Dec 11 00:07:16 2004
++++ snmplib/asn1.c Thu Feb 24 23:42:30 2005
@@ -181,6 +181,9 @@
#include <in.h>
#endif
@@ -10,3 +10,49 @@
#if HAVE_DMALLOC_H
#include <dmalloc.h>
#endif
+@@ -584,6 +587,11 @@
+ return NULL;
+ }
+ integer = *intp;
++ if (intsize > 4) {
++ register u_long signmask = ((u_long)1 << ((8 * sizeof(long)) - 1));
++ register u_long signbit = ((integer & signmask) != 0);
++ integer &= (signbit << 31) | 0x7fffffff;
++ }
+ /*
+ * Truncate "unnecessary" bytes off of the most significant end of this
+ * 2's complement integer. There should be no sequence of 9
+@@ -663,6 +671,9 @@
+ return NULL;
+ }
+ integer = *intp;
++ if (intsize > 4) {
++ integer &= 0xffffffff;
++ }
+ mask = ((u_long) 0xFF) << (8 * (sizeof(long) - 1));
+ /*
+ * mask is 0xFF000000 on a big-endian machine
+@@ -2674,6 +2685,12 @@
+ return 0;
+ }
+
++ if (intsize > 4) {
++ register u_long signmask = ((u_long)1 << ((8 * sizeof(long)) - 1));
++ register u_long signbit = ((integer & signmask) != 0);
++ integer &= (signbit << 31) | 0x7fffffff;
++ }
++
+ if (((*pkt_len - *offset) < 1) && !(r && asn_realloc(pkt, pkt_len))) {
+ return 0;
+ }
+@@ -2823,6 +2840,10 @@
+ if (intsize != sizeof(unsigned long)) {
+ _asn_size_err(errpre, intsize, sizeof(unsigned long));
+ return 0;
++ }
++
++ if (intsize > 4) {
++ integer &= 0xffffffff;
+ }
+
+ if (((*pkt_len - *offset) < 1) && !(r && asn_realloc(pkt, pkt_len))) {