import net-snmp-5.8-22.el8
This commit is contained in:
parent
db07951f02
commit
b492226db8
90
SOURCES/net-snmp-5.8-broken-errmsg.patch
Normal file
90
SOURCES/net-snmp-5.8-broken-errmsg.patch
Normal file
@ -0,0 +1,90 @@
|
||||
diff -urNp a/agent/mibgroup/host/hrh_filesys.c b/agent/mibgroup/host/hrh_filesys.c
|
||||
--- a/agent/mibgroup/host/hrh_filesys.c 2021-06-09 10:30:07.744455758 +0200
|
||||
+++ b/agent/mibgroup/host/hrh_filesys.c 2021-06-09 10:32:50.657160232 +0200
|
||||
@@ -219,6 +219,7 @@ var_hrhfilesys(struct variable *vp,
|
||||
{
|
||||
int fsys_idx;
|
||||
static char *string;
|
||||
+ static char empty_str[1];
|
||||
|
||||
fsys_idx =
|
||||
header_hrhfilesys(vp, name, length, exact, var_len, write_method);
|
||||
@@ -235,7 +236,7 @@ var_hrhfilesys(struct variable *vp,
|
||||
*var_len = 0;
|
||||
if (asprintf(&string, "%s", HRFS_entry->path) >= 0)
|
||||
*var_len = strlen(string);
|
||||
- return (u_char *) string;
|
||||
+ return (u_char *)(string ? string : empty_str);
|
||||
case HRFSYS_RMOUNT:
|
||||
free(string);
|
||||
if (HRFS_entry->flags & NETSNMP_FS_FLAG_REMOTE) {
|
||||
@@ -245,7 +246,7 @@ var_hrhfilesys(struct variable *vp,
|
||||
string = strdup("");
|
||||
}
|
||||
*var_len = string ? strlen(string) : 0;
|
||||
- return (u_char *) string;
|
||||
+ return (u_char *)(string ? string : empty_str);
|
||||
|
||||
case HRFSYS_TYPE:
|
||||
fsys_type_id[fsys_type_len - 1] =
|
||||
diff -urNp a/agent/mibgroup/ucd-snmp/disk.c b/agent/mibgroup/ucd-snmp/disk.c
|
||||
--- a/agent/mibgroup/ucd-snmp/disk.c 2021-06-09 10:30:07.728455689 +0200
|
||||
+++ b/agent/mibgroup/ucd-snmp/disk.c 2021-06-09 10:34:32.722597366 +0200
|
||||
@@ -842,6 +842,7 @@ var_extensible_disk(struct variable *vp,
|
||||
struct dsk_entry entry;
|
||||
static long long_ret;
|
||||
static char *errmsg;
|
||||
+ static char empty_str[1];
|
||||
|
||||
int i;
|
||||
for (i = 0; i < numdisks; i++){
|
||||
@@ -950,7 +951,7 @@ tryAgain:
|
||||
*var_len = strlen(errmsg);
|
||||
}
|
||||
}
|
||||
- return (u_char *) (errmsg);
|
||||
+ return (u_char *)(errmsg ? errmsg : empty_str);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
diff -urNp a/agent/mibgroup/ucd-snmp/disk_hw.c b/agent/mibgroup/ucd-snmp/disk_hw.c
|
||||
--- a/agent/mibgroup/ucd-snmp/disk_hw.c 2021-06-09 10:30:07.727455684 +0200
|
||||
+++ b/agent/mibgroup/ucd-snmp/disk_hw.c 2021-06-09 10:35:53.420943010 +0200
|
||||
@@ -314,6 +314,7 @@ var_extensible_disk(struct variable *vp,
|
||||
unsigned long long val;
|
||||
static long long_ret;
|
||||
static char *errmsg;
|
||||
+ static char empty_str[1];
|
||||
netsnmp_cache *cache;
|
||||
|
||||
/* Update the fsys H/W module */
|
||||
@@ -432,7 +433,7 @@ tryAgain:
|
||||
>= 0)) {
|
||||
*var_len = strlen(errmsg);
|
||||
}
|
||||
- return (u_char *) errmsg;
|
||||
+ return (u_char *)(errmsg ? errmsg : empty_str);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
diff -urNp a/agent/mibgroup/ucd-snmp/proc.c b/agent/mibgroup/ucd-snmp/proc.c
|
||||
--- a/agent/mibgroup/ucd-snmp/proc.c 2021-06-09 10:30:07.725455676 +0200
|
||||
+++ b/agent/mibgroup/ucd-snmp/proc.c 2021-06-09 10:37:31.143361548 +0200
|
||||
@@ -267,7 +267,7 @@ var_extensible_proc(struct variable *vp,
|
||||
struct myproc *proc;
|
||||
static long long_ret;
|
||||
static char *errmsg;
|
||||
-
|
||||
+ static char empty_str[1];
|
||||
|
||||
if (header_simple_table
|
||||
(vp, name, length, exact, var_len, write_method, numprocs))
|
||||
@@ -330,7 +330,7 @@ var_extensible_proc(struct variable *vp,
|
||||
}
|
||||
}
|
||||
*var_len = errmsg ? strlen(errmsg) : 0;
|
||||
- return ((u_char *) errmsg);
|
||||
+ return (u_char *)(errmsg ? errmsg : empty_str);
|
||||
case ERRORFIX:
|
||||
*write_method = fixProcError;
|
||||
long_return = fixproc.result;
|
98
SOURCES/net-snmp-5.8-digest-from-ECC.patch
Normal file
98
SOURCES/net-snmp-5.8-digest-from-ECC.patch
Normal file
@ -0,0 +1,98 @@
|
||||
From a1968db524e087a36a19a351b89bf6f1633819aa Mon Sep 17 00:00:00 2001
|
||||
From: minfrin <minfrin@users.noreply.github.com>
|
||||
Date: Tue, 5 Jan 2021 23:17:14 +0000
|
||||
Subject: [PATCH] Add support for digests detected from ECC certificates
|
||||
|
||||
Previously, the digest could be detected on RSA certificates only. This
|
||||
patch adds detection for ECC certificates.
|
||||
|
||||
[ bvanassche: changed _htmap2 into a two-dimensional array and renamed _htmap2
|
||||
back to _htmap ]
|
||||
---
|
||||
snmplib/snmp_openssl.c | 60 +++++++++++++++++++++++++++++++++++-------
|
||||
1 file changed, 50 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/snmplib/snmp_openssl.c b/snmplib/snmp_openssl.c
|
||||
index c092a007af..432cb5c27c 100644
|
||||
--- a/snmplib/snmp_openssl.c
|
||||
+++ b/snmplib/snmp_openssl.c
|
||||
@@ -521,18 +521,54 @@ netsnmp_openssl_cert_dump_extensions(X509 *ocert)
|
||||
}
|
||||
}
|
||||
|
||||
-static int _htmap[NS_HASH_MAX + 1] = {
|
||||
- 0, NID_md5WithRSAEncryption, NID_sha1WithRSAEncryption,
|
||||
- NID_sha224WithRSAEncryption, NID_sha256WithRSAEncryption,
|
||||
- NID_sha384WithRSAEncryption, NID_sha512WithRSAEncryption };
|
||||
+static const struct {
|
||||
+ uint16_t nid;
|
||||
+ uint16_t ht;
|
||||
+} _htmap[] = {
|
||||
+ { 0, NS_HASH_NONE },
|
||||
+#ifdef NID_md5WithRSAEncryption
|
||||
+ { NID_md5WithRSAEncryption, NS_HASH_MD5 },
|
||||
+#endif
|
||||
+#ifdef NID_sha1WithRSAEncryption
|
||||
+ { NID_sha1WithRSAEncryption, NS_HASH_SHA1 },
|
||||
+#endif
|
||||
+#ifdef NID_ecdsa_with_SHA1
|
||||
+ { NID_ecdsa_with_SHA1, NS_HASH_SHA1 },
|
||||
+#endif
|
||||
+#ifdef NID_sha224WithRSAEncryption
|
||||
+ { NID_sha224WithRSAEncryption, NS_HASH_SHA224 },
|
||||
+#endif
|
||||
+#ifdef NID_ecdsa_with_SHA224
|
||||
+ { NID_ecdsa_with_SHA224, NS_HASH_SHA224 },
|
||||
+#endif
|
||||
+#ifdef NID_sha256WithRSAEncryption
|
||||
+ { NID_sha256WithRSAEncryption, NS_HASH_SHA256 },
|
||||
+#endif
|
||||
+#ifdef NID_ecdsa_with_SHA256
|
||||
+ { NID_ecdsa_with_SHA256, NS_HASH_SHA256 },
|
||||
+#endif
|
||||
+#ifdef NID_sha384WithRSAEncryption
|
||||
+ { NID_sha384WithRSAEncryption, NS_HASH_SHA384 },
|
||||
+#endif
|
||||
+#ifdef NID_ecdsa_with_SHA384
|
||||
+ { NID_ecdsa_with_SHA384, NS_HASH_SHA384 },
|
||||
+#endif
|
||||
+#ifdef NID_sha512WithRSAEncryption
|
||||
+ { NID_sha512WithRSAEncryption, NS_HASH_SHA512 },
|
||||
+#endif
|
||||
+#ifdef NID_ecdsa_with_SHA512
|
||||
+ { NID_ecdsa_with_SHA512, NS_HASH_SHA512 },
|
||||
+#endif
|
||||
+};
|
||||
|
||||
int
|
||||
_nid2ht(int nid)
|
||||
{
|
||||
int i;
|
||||
- for (i=1; i<= NS_HASH_MAX; ++i) {
|
||||
- if (nid == _htmap[i])
|
||||
- return i;
|
||||
+
|
||||
+ for (i = 0; i < sizeof(_htmap) / sizeof(_htmap[0]); i++) {
|
||||
+ if (_htmap[i].nid == nid)
|
||||
+ return _htmap[i].ht;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@@ -541,9 +577,13 @@ _nid2ht(int nid)
|
||||
int
|
||||
_ht2nid(int ht)
|
||||
{
|
||||
- if ((ht < 0) || (ht > NS_HASH_MAX))
|
||||
- return 0;
|
||||
- return _htmap[ht];
|
||||
+ int i;
|
||||
+
|
||||
+ for (i = 0; i < sizeof(_htmap) / sizeof(_htmap[0]); i++) {
|
||||
+ if (_htmap[i].ht == ht)
|
||||
+ return _htmap[i].nid;
|
||||
+ }
|
||||
+ return 0;
|
||||
}
|
||||
#endif /* NETSNMP_FEATURE_REMOVE_OPENSSL_HT2NID */
|
||||
|
||||
|
48
SOURCES/net-snmp-5.8-double-IP-parsing.patch
Normal file
48
SOURCES/net-snmp-5.8-double-IP-parsing.patch
Normal file
@ -0,0 +1,48 @@
|
||||
From 1bb941d6fcd7ac2db5a54b95ee0ed07ec9861e70 Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Josef=20=C5=98=C3=ADdk=C3=BD?= <jridky@redhat.com>
|
||||
Date: Fri, 12 Mar 2021 10:15:30 +0100
|
||||
Subject: [PATCH] Prevent parsing IP address twice (#199)
|
||||
|
||||
This fixes issue, that is caused by parsing IP address twice.
|
||||
First as IPv4 and as IPv6 at second, even thow the address was
|
||||
properly parsed as a valid IPv4 address.
|
||||
---
|
||||
snmplib/transports/snmpUDPDomain.c | 2 +-
|
||||
snmplib/transports/snmpUDPIPv6Domain.c | 10 +++++++++-
|
||||
2 files changed, 10 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/snmplib/transports/snmpUDPDomain.c b/snmplib/transports/snmpUDPDomain.c
|
||||
index b96497f3a3..b594a389b9 100644
|
||||
--- a/snmplib/transports/snmpUDPDomain.c
|
||||
+++ b/snmplib/transports/snmpUDPDomain.c
|
||||
@@ -387,7 +387,7 @@ netsnmp_udp_parse_security(const char *token, char *param)
|
||||
/* Nope, wasn't a dotted quad. Must be a hostname. */
|
||||
int ret = netsnmp_gethostbyname_v4(sourcep, &network.s_addr);
|
||||
if (ret < 0) {
|
||||
- config_perror("cannot resolve source hostname");
|
||||
+ config_perror("cannot resolve IPv4 source hostname");
|
||||
return;
|
||||
}
|
||||
}
|
||||
diff --git a/snmplib/transports/snmpUDPIPv6Domain.c b/snmplib/transports/snmpUDPIPv6Domain.c
|
||||
index 238c8a9d63..7db19c5c02 100644
|
||||
--- a/snmplib/transports/snmpUDPIPv6Domain.c
|
||||
+++ b/snmplib/transports/snmpUDPIPv6Domain.c
|
||||
@@ -736,7 +736,15 @@ netsnmp_udp6_parse_security(const char *token, char *param)
|
||||
memset(&pton_addr.sin6_addr.s6_addr, '\0',
|
||||
sizeof(struct in6_addr));
|
||||
} else if (inet_pton(AF_INET6, sourcep, &pton_addr.sin6_addr) != 1) {
|
||||
- /* Nope, wasn't a numeric address. Must be a hostname. */
|
||||
+ /* Nope, wasn't a numeric IPv6 address. Must be IPv4 or a hostname. */
|
||||
+
|
||||
+ /* Try interpreting as dotted quad - IPv4 */
|
||||
+ struct in_addr network;
|
||||
+ if (inet_pton(AF_INET, sourcep, &network) > 0){
|
||||
+ /* Yes, it's IPv4 - so it's already parsed and we can return. */
|
||||
+ DEBUGMSGTL(("com2sec6", "IPv4 detected for IPv6 parser. Skipping.\n"));
|
||||
+ return;
|
||||
+ }
|
||||
#if HAVE_GETADDRINFO
|
||||
int gai_error;
|
||||
|
||||
|
25
SOURCES/net-snmp-5.8-engine-id.patch
Normal file
25
SOURCES/net-snmp-5.8-engine-id.patch
Normal file
@ -0,0 +1,25 @@
|
||||
From 79f014464ba761e2430cc767b021993ab9379822 Mon Sep 17 00:00:00 2001
|
||||
From: Wes Hardaker <opensource@hardakers.net>
|
||||
Date: Tue, 8 Jan 2019 08:52:29 -0800
|
||||
Subject: [PATCH] NEWS: snmptrap: BUG: 2899: Patch from Drew Roedersheimer to
|
||||
set library engineboots/time values before sending
|
||||
|
||||
---
|
||||
apps/snmptrap.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
diff --git a/apps/snmptrap.c b/apps/snmptrap.c
|
||||
index d16d2fa671..12808d07e4 100644
|
||||
--- a/apps/snmptrap.c
|
||||
+++ b/apps/snmptrap.c
|
||||
@@ -237,6 +237,9 @@ main(int argc, char *argv[])
|
||||
session.engineBoots = 1;
|
||||
if (session.engineTime == 0) /* not really correct, */
|
||||
session.engineTime = get_uptime(); /* but it'll work. Sort of. */
|
||||
+
|
||||
+ set_enginetime(session.securityEngineID, session.securityEngineIDLen,
|
||||
+ session.engineBoots, session.engineTime, TRUE);
|
||||
}
|
||||
|
||||
ss = snmp_add(&session,
|
||||
|
67
SOURCES/net-snmp-5.8-fix-cert-crash.patch
Normal file
67
SOURCES/net-snmp-5.8-fix-cert-crash.patch
Normal file
@ -0,0 +1,67 @@
|
||||
diff -urNp a/snmplib/snmp_openssl.c b/snmplib/snmp_openssl.c
|
||||
--- a/snmplib/snmp_openssl.c 2021-06-09 12:38:23.196037329 +0200
|
||||
+++ b/snmplib/snmp_openssl.c 2021-06-09 12:44:11.782503048 +0200
|
||||
@@ -284,31 +284,30 @@ _cert_get_extension(X509_EXTENSION *oex
|
||||
}
|
||||
if (X509V3_EXT_print(bio, oext, 0, 0) != 1) {
|
||||
snmp_log(LOG_ERR, "could not print extension!\n");
|
||||
- BIO_vfree(bio);
|
||||
- return NULL;
|
||||
+ goto out;
|
||||
}
|
||||
|
||||
space = BIO_get_mem_data(bio, &data);
|
||||
if (buf && *buf) {
|
||||
- if (*len < space)
|
||||
- buf_ptr = NULL;
|
||||
- else
|
||||
- buf_ptr = *buf;
|
||||
+ if (*len < space +1) {
|
||||
+ snmp_log(LOG_ERR, "not enough buffer space to print extension\n");
|
||||
+ goto out;
|
||||
+ }
|
||||
+ buf_ptr = *buf;
|
||||
+ } else {
|
||||
+ buf_ptr = calloc(1, space + 1);
|
||||
}
|
||||
- else
|
||||
- buf_ptr = calloc(1,space + 1);
|
||||
|
||||
if (!buf_ptr) {
|
||||
- snmp_log(LOG_ERR,
|
||||
- "not enough space or error in allocation for extenstion\n");
|
||||
- BIO_vfree(bio);
|
||||
- return NULL;
|
||||
+ snmp_log(LOG_ERR, "error in allocation for extenstion\n");
|
||||
+ goto out;
|
||||
}
|
||||
memcpy(buf_ptr, data, space);
|
||||
buf_ptr[space] = 0;
|
||||
if (len)
|
||||
*len = space;
|
||||
|
||||
+out:
|
||||
BIO_vfree(bio);
|
||||
|
||||
return buf_ptr;
|
||||
@@ -479,7 +478,7 @@ netsnmp_openssl_cert_dump_extensions(X50
|
||||
{
|
||||
X509_EXTENSION *extension;
|
||||
const char *extension_name;
|
||||
- char buf[SNMP_MAXBUF_SMALL], *buf_ptr = buf, *str, *lf;
|
||||
+ char buf[SNMP_MAXBUF], *buf_ptr = buf, *str, *lf;
|
||||
int i, num_extensions, buf_len, nid;
|
||||
|
||||
if (NULL == ocert)
|
||||
@@ -499,6 +498,11 @@ netsnmp_openssl_cert_dump_extensions(X50
|
||||
extension_name = OBJ_nid2sn(nid);
|
||||
buf_len = sizeof(buf);
|
||||
str = _cert_get_extension_str_at(ocert, i, &buf_ptr, &buf_len, 0);
|
||||
+ if (!str) {
|
||||
+ DEBUGMSGT(("9:cert:dump", " %2d: %s\n", i,
|
||||
+ extension_name));
|
||||
+ continue;
|
||||
+ }
|
||||
lf = strchr(str, '\n'); /* look for multiline strings */
|
||||
if (NULL != lf)
|
||||
*lf = '\0'; /* only log first line of multiline here */
|
1066
SOURCES/net-snmp-5.8-intermediate-certs.patch
Normal file
1066
SOURCES/net-snmp-5.8-intermediate-certs.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -10,7 +10,7 @@
|
||||
Summary: A collection of SNMP protocol tools and libraries
|
||||
Name: net-snmp
|
||||
Version: 5.8
|
||||
Release: 20%{?dist}
|
||||
Release: 22%{?dist}
|
||||
Epoch: 1
|
||||
|
||||
License: BSD
|
||||
@ -62,6 +62,12 @@ Patch33: net-snmp-5.8-clientaddr-error-message.patch
|
||||
Patch34: net-snmp-5.8-ipv6-disabled.patch
|
||||
Patch35: net-snmp-5.8-empty-passphrase.patch
|
||||
Patch36: net-snmp-5.8-asn-parse-nlength.patch
|
||||
Patch37: net-snmp-5.8-double-IP-parsing.patch
|
||||
Patch38: net-snmp-5.8-digest-from-ECC.patch
|
||||
Patch39: net-snmp-5.8-broken-errmsg.patch
|
||||
Patch40: net-snmp-5.8-intermediate-certs.patch
|
||||
Patch41: net-snmp-5.8-fix-cert-crash.patch
|
||||
Patch42: net-snmp-5.8-engine-id.patch
|
||||
|
||||
# Modern RPM API means at least EL6
|
||||
Patch101: net-snmp-5.8-modern-rpm-api.patch
|
||||
@ -223,6 +229,12 @@ rm -r python
|
||||
%patch34 -p1 -b .ipv6-disabled
|
||||
%patch35 -p1 -b .empty-passphrase
|
||||
%patch36 -p1 -b .asn-parse-nlength
|
||||
%patch37 -p1 -b .double-IP-parsing
|
||||
%patch38 -p1 -b .digest-from-ECC
|
||||
%patch39 -p1 -b .broken-errmsg
|
||||
%patch40 -p1 -b .intermediate-certs
|
||||
%patch41 -p1 -b .fix-cert-crash
|
||||
%patch42 -p1 -b .engine-id
|
||||
|
||||
%patch101 -p1 -b .modern-rpm-api
|
||||
|
||||
@ -477,6 +489,16 @@ LD_LIBRARY_PATH=%{buildroot}/%{_libdir} make test
|
||||
%{_libdir}/libnetsnmptrapd*.so.%{soname}*
|
||||
|
||||
%changelog
|
||||
* Mon Jun 28 2021 Josef Ridky <jridky@redhat.com> - 1:5.8-22
|
||||
- update engineTime when sending traps (#1973252)
|
||||
|
||||
* Wed Jun 09 2021 Josef Ridky <jridky@redhat.com> - 1:5.8-21
|
||||
- prevent parsing IP address twice (#1768908)
|
||||
- add support for digests detected from ECC certs (#1919714)
|
||||
- fix broken ErrorMsg at ucd-snmp (#1933150)
|
||||
- add support for intermediate certs (#1914656)
|
||||
- fix crash of certs with longer extension (#1908718)
|
||||
|
||||
* Tue Jan 05 2021 Josef Ridky <jridky@redhat.com> - 1:5.8-20
|
||||
- fix issue with parsing of long traps (#1912242)
|
||||
- modify fix for #1877375
|
||||
|
Loading…
Reference in New Issue
Block a user