Compare commits

...
Sign in to create a new pull request.

7 commits

Author SHA1 Message Date
Python Maint
28e611c958 Rebuilt for Python 3.15.0b4 ABI change 2026-07-24 12:56:28 +02:00
Jitka Plesnikova
649594e0a8 Perl 5.44 rebuild 2026-07-23 17:39:50 +02:00
Python Maint
baccc928a0 Rebuilt for Python 3.15.0b4 ABI change 2026-07-22 10:56:03 +02:00
Fedora Release Engineering
7f44925712 Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild 2026-07-16 09:28:09 +00:00
Simo Sorce
7043b42227 Openssl 4 build fixes
Signed-off-by: Simo Sorce <simo@redhat.com>
2026-06-12 11:10:49 -04:00
Yaakov Selkowitz
f11e93ce09 Fix "Checking the Net-SNMP configure script validity" test
Autoreconf is run during build, which may be a different version than
upstream used, resulting in a mismatch that causes this test to fail.
2026-06-08 12:39:06 -04:00
Python Maint
0d287ccdd2 Rebuilt for Python 3.15 2026-06-03 17:44:08 +02:00
2 changed files with 206 additions and 3 deletions

View file

@ -0,0 +1,177 @@
From 338d289f1e14650edf0bd7e960272871029131e1 Mon Sep 17 00:00:00 2001
From: Simo Sorce <simo@redhat.com>
Date: Fri, 17 Apr 2026 12:47:18 -0400
Subject: [PATCH] Use OpenSSL accessors for opaque structs
Replaced direct access to `ASN1_STRING` fields with OpenSSL accessor functions
(e.g., `ASN1_STRING_type`, `ASN1_STRING_length`, `ASN1_STRING_get0_data`) and
updated `X509_NAME` and `X509_EXTENSION` pointers to `const`. This is required
to maintain compatibility with newer OpenSSL versions (4.0+) where these
structures were made opaque.
Co-authored-by: Gemini <gemini@google.com>
Signed-off-by: Simo Sorce <simo@redhat.com>
---
snmplib/snmp_openssl.c | 74 ++++++++++++++++++++++--------------------
1 file changed, 39 insertions(+), 35 deletions(-)
diff --git a/snmplib/snmp_openssl.c b/snmplib/snmp_openssl.c
index 4471a7a..658841a 100644
--- a/snmplib/snmp_openssl.c
+++ b/snmplib/snmp_openssl.c
@@ -147,7 +147,7 @@ void netsnmp_init_openssl(void) {
static char *
_cert_get_name(X509 *ocert, int which, char **buf, int *len, int flags)
{
- X509_NAME *osubj_name;
+ const X509_NAME *osubj_name;
int space;
char *buf_ptr;
@@ -187,7 +187,7 @@ _cert_get_name(X509 *ocert, int which, char **buf, int *len, int flags)
char *
netsnmp_openssl_cert_get_subjectName(X509 *ocert, char **buf, int *len)
{
- X509_NAME *osubj_name;
+ const X509_NAME *osubj_name;
int space;
char *buf_ptr;
@@ -233,11 +233,11 @@ netsnmp_openssl_cert_get_commonName(X509 *ocert, char **buf, int *len)
void
netsnmp_openssl_cert_dump_names(X509 *ocert)
{
- int i, onid;
- X509_NAME_ENTRY *oname_entry;
- ASN1_STRING *oname_value;
- X509_NAME *osubj_name;
- const char *prefix_short, *prefix_long;
+ int i, onid;
+ const X509_NAME_ENTRY *oname_entry;
+ const ASN1_STRING *oname_value;
+ const X509_NAME *osubj_name;
+ const char *prefix_short, *prefix_long;
if (NULL == ocert)
return;
@@ -253,7 +253,7 @@ netsnmp_openssl_cert_dump_names(X509 *ocert)
netsnmp_assert(NULL != oname_entry);
oname_value = X509_NAME_ENTRY_get_data(oname_entry);
- if (oname_value->type != V_ASN1_PRINTABLESTRING)
+ if (ASN1_STRING_type(oname_value) != V_ASN1_PRINTABLESTRING)
continue;
/** get NID */
@@ -268,7 +268,7 @@ netsnmp_openssl_cert_dump_names(X509 *ocert)
DEBUGMSGT(("9:cert:dump:names",
"[%02d] NID type %d, ASN type %d\n", i, onid,
- oname_value->type));
+ ASN1_STRING_type(oname_value)));
DEBUGMSGT(("9:cert:dump:names", "%s/%s: '%s'\n", prefix_long,
prefix_short, ASN1_STRING_get0_data(oname_value)));
}
@@ -276,7 +276,7 @@ netsnmp_openssl_cert_dump_names(X509 *ocert)
#endif /* NETSNMP_FEATURE_REMOVE_CERT_DUMP_NAMES */
static char *
-_cert_get_extension(X509_EXTENSION *oext, char **buf, int *len, int flags)
+_cert_get_extension(const X509_EXTENSION *oext, char **buf, int *len, int flags)
{
int space;
char *buf_ptr = NULL;
@@ -327,10 +327,10 @@ out:
*/
/** instead of exposing this function, make helper functions for each
* field, like netsnmp_openssl_cert_get_subjectAltName, below */
-X509_EXTENSION *
+const X509_EXTENSION *
_cert_get_extension_at(X509 *ocert, int pos, char **buf, int *len, int flags)
{
- X509_EXTENSION *oext;
+ const X509_EXTENSION *oext;
if ((NULL == ocert) || ((buf && !len) || (len && !buf)))
return NULL;
@@ -354,7 +354,7 @@ static char *
_cert_get_extension_str_at(X509 *ocert, int pos, char **buf, int *len,
int flags)
{
- X509_EXTENSION *oext;
+ const X509_EXTENSION *oext;
if ((NULL == ocert) || ((buf && !len) || (len && !buf)))
return NULL;
@@ -374,7 +374,7 @@ _cert_get_extension_str_at(X509 *ocert, int pos, char **buf, int *len,
*/
/** instead of exposing this function, make helper functions for each
* field, like netsnmp_openssl_cert_get_subjectAltName, below */
-X509_EXTENSION *
+const X509_EXTENSION *
_cert_get_extension_id(X509 *ocert, int which, char **buf, int *len, int flags)
{
int pos;
@@ -434,27 +434,31 @@ _extract_oname(const GENERAL_NAME *oname)
break;
case GEN_IPADD:
- if (oname->d.iPAddress->length == 4) {
- sprintf(ipbuf, "%d.%d.%d.%d", oname->d.iPAddress->data[0],
- oname->d.iPAddress->data[1],
- oname->d.iPAddress->data[2],
- oname->d.iPAddress->data[3]);
- rtn = strdup(ipbuf);
- }
- else if ((oname->d.iPAddress->length == 16) ||
- (oname->d.iPAddress->length == 20)) {
- char *pos = ipbuf;
- int j;
- for(j = 0; j < oname->d.iPAddress->length; ++j) {
- *pos++ = VAL2HEX(oname->d.iPAddress->data[j]);
- *pos++ = ':';
+ {
+ int ipaddr_len = ASN1_STRING_length(oname->d.iPAddress);
+ const unsigned char *ipaddr_data = ASN1_STRING_get0_data(oname->d.iPAddress);
+ if (ipaddr_len == 4) {
+ sprintf(ipbuf, "%d.%d.%d.%d", ipaddr_data[0],
+ ipaddr_data[1],
+ ipaddr_data[2],
+ ipaddr_data[3]);
+ rtn = strdup(ipbuf);
+ }
+ else if ((ipaddr_len == 16) ||
+ (ipaddr_len == 20)) {
+ char *pos = ipbuf;
+ int j;
+ for(j = 0; j < ipaddr_len; ++j) {
+ *pos++ = VAL2HEX(ipaddr_data[j]);
+ *pos++ = ':';
+ }
+ *pos = '\0';
+ rtn = strdup(ipbuf);
}
- *pos = '\0';
- rtn = strdup(ipbuf);
+ else
+ NETSNMP_LOGONCE((LOG_WARNING, "unexpected ip addr length %d\n",
+ ipaddr_len));
}
- else
- NETSNMP_LOGONCE((LOG_WARNING, "unexpected ip addr length %d\n",
- oname->d.iPAddress->length));
break;
default:
@@ -485,7 +489,7 @@ netsnmp_openssl_cert_get_subjectAltNames(X509 *ocert, char **buf, int *len)
void
netsnmp_openssl_cert_dump_extensions(X509 *ocert)
{
- X509_EXTENSION *extension;
+ const X509_EXTENSION *extension;
const char *extension_name;
char buf[SNMP_MAXBUF], *buf_ptr = buf, *str, *lf;
int i, num_extensions, buf_len, nid;
--
2.53.0

View file

@ -10,7 +10,7 @@
Summary: A collection of SNMP protocol tools and libraries
Name: net-snmp
Version: 5.9.5.2
Release: 4%{?dist}
Release: 10%{?dist}
Epoch: 1
License: MIT-CMU AND BSD-3-Clause AND MIT
@ -58,6 +58,9 @@ Patch102: net-snmp-5.9-python3.patch
# make Mail::Sender optional
Patch103: net-snmp-5.9-mail-sender.patch
# Openssl 4 build fixes
Patch104: 0001-Use-OpenSSL-accessors-for-opaque-structs.patch
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-agent-libs%{?_isa} = %{epoch}:%{version}-%{release}
# This is actually needed for the %%triggerun script but Requires(triggerun)
@ -90,7 +93,7 @@ BuildRequires: perl(TAP::Harness)
BuildRequires: perl(vars)
BuildRequires: perl(warnings)
BuildRequires: lm_sensors-devel >= 3
BuildRequires: autoconf, automake
BuildRequires: autoconf, automake, libtool
%description
SNMP (Simple Network Management Protocol) is a protocol used for
@ -243,14 +246,19 @@ cp %{SOURCE10} .
%if 0%{?rhel}
%patch 103 -p1
%endif
%patch 104 -p1
# disable failing test - see https://bugzilla.redhat.com/show_bug.cgi?id=680697
rm testing/fulltests/default/T200*
# Autoreconf is run during build, which may be a different version than upstream used,
# resulting in a mismatch during "Checking the Net-SNMP configure script validity" test
autoconf --version | awk 'NR==1 {print $4}' > dist/autoconf-version
%build
# Autoreconf to get autoconf 2.69 for ARM (#926223)
autoreconf
autoreconf -fiv
MIBS="host agentx smux \
ucd-snmp/diskio tcp-mib udp-mib mibII/mta_sendmail \
@ -506,6 +514,24 @@ LD_LIBRARY_PATH=%{buildroot}/%{_libdir} make test
%{_libdir}/libnetsnmptrapd*.so.%{soname}*
%changelog
* Fri Jul 24 2026 Python Maint <python-maint@redhat.com> - 1:5.9.5.2-10
- Rebuilt for Python 3.15.0b4 ABI change
* Thu Jul 23 2026 Jitka Plesnikova <jplesnik@redhat.com> - 1:5.9.5.2-9
- Perl 5.44 rebuild
* Wed Jul 22 2026 Python Maint <python-maint@redhat.com> - 1:5.9.5.2-8
- Rebuilt for Python 3.15.0b4 ABI change
* Thu Jul 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1:5.9.5.2-7
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
* Fri Jun 12 2026 Simo Sorce <ssorce@redhat.com> - 1:5.9.5.2-6
- Openssl 4 and autoconf build fixes
* Wed Jun 03 2026 Python Maint <python-maint@redhat.com> - 1:5.9.5.2-5
- Rebuilt for Python 3.15
* Thu Jan 29 2026 Yaakov Selkowitz <yselkowi@redhat.com> - 1:5.9.5.2-4
- Add net-snmp-devel dependency on libnl3-devel