slackware-current/source/n/ntp/fix_ipv6_locallink_regression.diff
Patrick J Volkerding 0f44897071 Tue Jul 16 18:30:34 UTC 2024
Thanks for the Slackiversary wishes!
a/bcachefs-tools-1.9.4-x86_64-1.txz:  Upgraded.
a/sysklogd-2.6.0-x86_64-1.txz:  Upgraded.
l/dbus-python-1.3.2-x86_64-3.txz:  Rebuilt.
  Build with meson, which fixes pulseaudio's qpaeq.
  Thanks to gmgf and USUARIONUEVO.
l/nodejs-20.15.1-x86_64-2.txz:  Rebuilt.
  Recompiled using --shared-nghttp3.
l/python-sphinx-7.4.4-x86_64-1.txz:  Upgraded.
n/c-ares-1.32.2-x86_64-1.txz:  Upgraded.
n/curl-8.8.0-x86_64-2.txz:  Rebuilt.
  Recompiled using --with-nghttp2=/usr and --with-nghttp3=/usr.
n/libnftnl-1.2.7-x86_64-1.txz:  Upgraded.
n/nghttp3-1.4.0-x86_64-1.txz:  Added.
  Thanks to pbslxw and Lockywolf.
n/ntp-4.2.8p18-x86_64-5.txz:  Rebuilt.
  This is a bugfix release to fix a regression in ntp-4.2.8p18:
  If the IPv6 link-local interface was not ready for binding on the first
  attempt, ntpd would segfault in update_interfaces().
  Thanks to Jonathan Woithe for the bug report and fix.
2024-07-16 21:07:40 +02:00

37 lines
1.4 KiB
Diff

This patch fixes a regression introduced in ntpd revision 1.4040.1.4[1].
The first ntpd release to be affected was 4.2.8p18.
If the IPv6 link-local interface was not ready for binding on the first
attempt, ntpd would segfault in update_interfaces(). The cause was the
inadvertent referencing of the endpoint returned by create_interface() (ep,
which is NULL on error) rather than the endpoint which contained the address
information (ep2).
In the patch author's experience, the segfault would only occur when ntpd
was started as part of the boot sequence. Most - but not all - boots were
affected. Evidently it could happen that the timing of ntpd's start up was
delayed enough that the IPv6 link-local interface was ready for the bind()
call when it was first issued by open_socket() via create_interface().
No segfaults were observed by the patch's author when starting ntpd manually
after logging in.
[1] [Bug 3913] Avoid duplicate IPv6 link-local manycast associations.
Complete the switch from struct interface to endpt.
--- a/ntp-4.2.8p18/ntpd/ntp_io.c 2024-05-07 20:51:17.000000000 +0930
+++ b/ntp-4.2.8p18/ntpd/ntp_io.c 2024-07-16 22:06:48.873953452 +0930
@@ -1921,11 +1921,11 @@
}
else {
DPRINT_INTERFACE(3,
- (ep, "updating ", " new - FAILED"));
+ (ep2, "updating ", " new - FAILED"));
msyslog(LOG_ERR,
"cannot bind address %s",
- stoa(&ep->sin));
+ stoa(&ep2->sin));
}
free(ep2);
}