[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1107604: marked as done (unblock: chrony/4.6.1-3)



Your message dated Tue, 10 Jun 2025 17:38:08 +0000
with message-id <E1uP2vI-00DQA0-1P@respighi.debian.org>
and subject line unblock chrony
has caused the Debian Bug report #1107604,
regarding unblock: chrony/4.6.1-3
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1107604: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1107604
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
X-Debbugs-Cc: chrony@packages.debian.org
Control: affects -1 + src:chrony
User: release.debian.org@packages.debian.org
Usertags: unblock

Please unblock package chrony

[ Reason ]
A regression has been introduced in chrony 4.6 which renders the
'maxsources' option inoperative for time sources not specified by an IP
address when they are loaded from a sourcedir.

[ Impact ]
While not serious, this issue would certainly confuse users wanting a
specific number of time sources from a pool of NTP servers.

[ Tests ]
Testing that this regression is fixed is as simple as:
# Configure a pool of NTP servers in a sourcedir.
# echo "pool 1.debian.pool.ntp.org maxsources 3" > /etc/chrony/sources.d/debian-pool.sources

# Check that we have 3 selectable sources.
$ chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ serveur-sauvegarde.easys>     3   6   377     1   -516us[ -516us] +/-   60ms
^+ ip212-227-232-161.pbiaas>     2   6   377     1  -3531us[-3531us] +/-   58ms
^* flightplandatabase.com        2   6   177     1  +2580us[+2744us] +/-   51ms

# Reload the time sources.
$ sudo chronyc reload sources
200 OK

# Check that we *still* have 3 and only 3 selectable sources.
$ chronyc sources
MS Name/IP address         Stratum Poll Reach LastRx Last sample
===============================================================================
^+ serveur-sauvegarde.easys>     2   6   377    65  -4089us[-3453us] +/-   57ms
^+ ip212-227-232-161.pbiaas>     2   7   377    67  +1015us[+3415us] +/-   63ms
^+ flightplandatabase.com        2   6   377     1  +2416us[+2416us] +/-   44ms

Without the proposed fix, the last command would have shown more
selectable sources than the maximum of 3 we have requested with the
'maxsources 3' option.

[ Risks ]
The fix is fairly trivial and well tested both upstream and by myself.

[ Checklist ]
  [x] all changes are documented in the d/changelog
  [x] I reviewed all changes and I approve them
  [x] attach debdiff against the package in testing

unblock chrony/4.6.1-3
diff -Nru chrony-4.6.1/debian/changelog chrony-4.6.1/debian/changelog
--- chrony-4.6.1/debian/changelog	2025-04-02 21:33:06.000000000 +0200
+++ chrony-4.6.1/debian/changelog	2025-06-03 17:16:37.000000000 +0200
@@ -1,3 +1,11 @@
+chrony (4.6.1-3) unstable; urgency=medium
+
+  * debian/patches/:
+    - Add conf:_fix_sourcedir_reloading_to_not_multiply_sources.patch. Thanks
+    to MichaelR <MichaelR42@runbox.com> for the report. (Closes: #1106875)
+
+ -- Vincent Blut <vincent.debian@free.fr>  Tue, 03 Jun 2025 17:16:37 +0200
+
 chrony (4.6.1-2) unstable; urgency=medium
 
   [ Vincent Blut ]
diff -Nru chrony-4.6.1/debian/patches/conf:_fix_sourcedir_reloading_to_not_multiply_sources.patch chrony-4.6.1/debian/patches/conf:_fix_sourcedir_reloading_to_not_multiply_sources.patch
--- chrony-4.6.1/debian/patches/conf:_fix_sourcedir_reloading_to_not_multiply_sources.patch	1970-01-01 01:00:00.000000000 +0100
+++ chrony-4.6.1/debian/patches/conf:_fix_sourcedir_reloading_to_not_multiply_sources.patch	2025-06-03 17:16:37.000000000 +0200
@@ -0,0 +1,56 @@
+From cacd64bf4a1fb5248f16c1fa5008a4beed568844 Mon Sep 17 00:00:00 2001
+From: Miroslav Lichvar <mlichvar@redhat.com>
+Date: Mon, 2 Jun 2025 10:53:47 +0200
+Subject: [PATCH] conf: fix sourcedir reloading to not multiply sources
+
+The sourcedir reload triggered by the chronyc "reload sources"
+command incorrectly assumed that NSR_AddSourceByName() can return
+only the NSR_Success status when a source is added. It ignored the
+NSR_UnresolvedName status returned for a source whose name needs to
+be resolved after the call (i.e. not specified with an IP address)
+and added the source again, effectively multiplying it if the name
+can be resolved to a different IP address.
+
+Fix the code to check for the NSR_UnresolvedName status to correctly
+determine whether the source was already added before and should not be
+added again.
+
+Reported-by: MichaelR <MichaelR42@runbox.com>
+Fixes: 916ed70c4a81 ("conf: save source status in sourcedir reload")
+---
+ conf.c | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+Index: chrony/conf.c
+===================================================================
+--- chrony.orig/conf.c
++++ chrony/conf.c
+@@ -1742,8 +1742,8 @@ reload_source_dirs(void)
+   NTP_Source *prev_sources, *new_sources, *source;
+   unsigned int i, j, prev_size, new_size, unresolved;
+   char buf[MAX_LINE_LENGTH];
++  int d, pass, was_added;
+   NSR_Status s;
+-  int d, pass;
+ 
+   /* Ignore reload command before adding configured sources */
+   if (!conf_ntp_sources_added)
+@@ -1782,13 +1782,16 @@ reload_source_dirs(void)
+       else
+         d = i < prev_size ? -1 : 1;
+ 
++      was_added = d <= 0 && (prev_sources[i].status == NSR_Success ||
++                             prev_sources[i].status == NSR_UnresolvedName);
++
+       /* Remove missing sources before adding others to avoid conflicts */
+-      if (pass == 0 && d < 0 && prev_sources[i].status == NSR_Success) {
++      if (pass == 0 && d < 0 && was_added) {
+         NSR_RemoveSourcesById(prev_sources[i].conf_id);
+       }
+ 
+       /* Add new sources and sources that could not be added before */
+-      if (pass == 1 && (d > 0 || (d == 0 && prev_sources[i].status != NSR_Success))) {
++      if (pass == 1 && (d > 0 || (d == 0 && !was_added))) {
+         source = &new_sources[j];
+         s = NSR_AddSourceByName(source->params.name, source->params.family, source->params.port,
+                                 source->pool, source->type, &source->params.params,
diff -Nru chrony-4.6.1/debian/patches/series chrony-4.6.1/debian/patches/series
--- chrony-4.6.1/debian/patches/series	2025-04-02 21:33:06.000000000 +0200
+++ chrony-4.6.1/debian/patches/series	2025-06-03 17:16:37.000000000 +0200
@@ -1,2 +1,3 @@
+conf:_fix_sourcedir_reloading_to_not_multiply_sources.patch
 debianize-chronyd-restricted-unit-file.patch
 nm-dispatcher-dhcp_Move-server_dir-to-run.patch

Attachment: signature.asc
Description: PGP signature


--- End Message ---
--- Begin Message ---
Unblocked chrony.

--- End Message ---

Reply to: