🔒 Repository is read-only – file editing is disabled.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
Submitted By: Pierre Labastie <pierre dot labastie at neuf dot fr>
Date: 2026-06-13
Initial Package Version: 4.2.8p18
Upstream Status: Not applied yet
Origin: https://bugs.ntp.org/show_bug.cgi?id=4023
Description: Use opaque functions to access ASN1_XXX types
diff -Nru a/ntpd/ntp_crypto.c b/ntpd/ntp_crypto.c
--- a/ntpd/ntp_crypto.c 2026-05-19 05:47:27 +0000
+++ b/ntpd/ntp_crypto.c 2026-05-19 05:47:27 +0000
@@ -2020,6 +2020,9 @@
struct calendar *pjd /* pointer to result */
)
{
+ /* OpenSSL 4 makes ASN1_TIME opaque */
+#if OPENSSL_VERSION_NUMBER < 0x40000000L
+
size_t len; /* length of ASN1_TIME string */
char v[24]; /* writable copy of ASN1_TIME string */
unsigned long temp; /* result from strtoul */
@@ -2065,7 +2068,24 @@
pjd->year = temp;
pjd->yearday = pjd->weekday = 0;
- return;
+
+#else /* OpenSSL 4+ follows */
+
+ struct tm t;
+ int rc;
+
+ rc = ASN1_TIME_to_tm(asn1time, &t);
+ INSIST(0 == rc);
+
+ pjd->second = t.tm_sec;
+ pjd->minute = t.tm_min;
+ pjd->hour = t.tm_hour;
+ pjd->monthday = t.tm_mday;
+ pjd->month = t.tm_mon;
+ pjd->year = t.tm_year;
+ pjd->yearday = t.tm_yday;
+ pjd->weekday = t.tm_wday;
+#endif
}
@@ -3518,6 +3538,7 @@
X509_EXTENSION *ext;
ASN1_OBJECT *obj;
int nid;
+ int datalen;
ASN1_OCTET_STRING *data;
ext = X509_get_ext(cert, i);
@@ -3551,8 +3572,21 @@
*/
case NID_subject_key_identifier:
data = X509_EXTENSION_get_data(ext);
- ret->grpkey = BN_bin2bn(&data->data[2],
- data->length - 2, NULL);
+#if OPENSSL_VERSION_NUMBER >= 0x40000000
+ datalen = ASN1_STRING_length(data);
+ if (datalen > 2) {
+ ret->grpkey =
+ BN_bin2bn(ASN1_STRING_get0_data(data) + 2,
+ datalen - 2, NULL);
+ }
+#else /* OpenSSL 3.x or earlier follows */
+ datalen = data->length;
+ if (datalen > 2) {
+ ret->grpkey =
+ BN_bin2bn(&data->data[2],
+ datalen - 2, NULL);
+ }
+#endif
/* fall through */
default:
DPRINTF(1, ("cert_parse: %s\n",