mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 17:59:20 -04:00
(1) Fix memory leak by connections from <UNKNOWN>.
(2) Take care of large counters on 64bit platforms. PR: ports/78807 (1) Submitted by: Andriy Gapon <avg@icyb.net.ua> (1), Peter Losher <Peter_Losher@isc.org> (2) Approved by: portmgr (marcus)
This commit is contained in:
parent
d87abb1b71
commit
a3597c82c2
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=131884
9 changed files with 177 additions and 9 deletions
|
@ -7,7 +7,7 @@
|
|||
|
||||
PORTNAME= snmp
|
||||
PORTVERSION= 5.2.1
|
||||
PORTREVISION= 0
|
||||
PORTREVISION= 1
|
||||
PKGNAMEPREFIX= net-
|
||||
CATEGORIES= net-mgmt ipv6
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
|
||||
|
|
|
@ -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))) {
|
||||
|
|
10
net-mgmt/net-snmp-devel/files/patch-snmp_agent.c
Normal file
10
net-mgmt/net-snmp-devel/files/patch-snmp_agent.c
Normal file
|
@ -0,0 +1,10 @@
|
|||
--- agent/snmp_agent.c.orig Tue Mar 22 11:11:51 2005
|
||||
+++ agent/snmp_agent.c Tue Mar 22 11:12:29 2005
|
||||
@@ -825,6 +825,7 @@
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
+ SNMP_FREE(addr_string);
|
||||
if (hosts_ctl("snmpd", STRING_UNKNOWN, STRING_UNKNOWN, STRING_UNKNOWN)){
|
||||
snmp_log(allow_severity, "Connection from <UNKNOWN>\n");
|
||||
addr_string = strdup("<UNKNOWN>");
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
PORTNAME= snmp
|
||||
PORTVERSION= 5.2.1
|
||||
PORTREVISION= 0
|
||||
PORTREVISION= 1
|
||||
PKGNAMEPREFIX= net-
|
||||
CATEGORIES= net-mgmt ipv6
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
|
||||
|
|
|
@ -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))) {
|
||||
|
|
10
net-mgmt/net-snmp/files/patch-snmp_agent.c
Normal file
10
net-mgmt/net-snmp/files/patch-snmp_agent.c
Normal file
|
@ -0,0 +1,10 @@
|
|||
--- agent/snmp_agent.c.orig Tue Mar 22 11:11:51 2005
|
||||
+++ agent/snmp_agent.c Tue Mar 22 11:12:29 2005
|
||||
@@ -825,6 +825,7 @@
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
+ SNMP_FREE(addr_string);
|
||||
if (hosts_ctl("snmpd", STRING_UNKNOWN, STRING_UNKNOWN, STRING_UNKNOWN)){
|
||||
snmp_log(allow_severity, "Connection from <UNKNOWN>\n");
|
||||
addr_string = strdup("<UNKNOWN>");
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
PORTNAME= snmp
|
||||
PORTVERSION= 5.2.1
|
||||
PORTREVISION= 0
|
||||
PORTREVISION= 1
|
||||
PKGNAMEPREFIX= net-
|
||||
CATEGORIES= net-mgmt ipv6
|
||||
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
|
||||
|
|
|
@ -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))) {
|
||||
|
|
10
net-mgmt/net-snmp53/files/patch-snmp_agent.c
Normal file
10
net-mgmt/net-snmp53/files/patch-snmp_agent.c
Normal file
|
@ -0,0 +1,10 @@
|
|||
--- agent/snmp_agent.c.orig Tue Mar 22 11:11:51 2005
|
||||
+++ agent/snmp_agent.c Tue Mar 22 11:12:29 2005
|
||||
@@ -825,6 +825,7 @@
|
||||
return 0;
|
||||
}
|
||||
} else {
|
||||
+ SNMP_FREE(addr_string);
|
||||
if (hosts_ctl("snmpd", STRING_UNKNOWN, STRING_UNKNOWN, STRING_UNKNOWN)){
|
||||
snmp_log(allow_severity, "Connection from <UNKNOWN>\n");
|
||||
addr_string = strdup("<UNKNOWN>");
|
Loading…
Add table
Reference in a new issue