Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package ntpd-rs for openSUSE:Factory checked in at 2025-09-10 17:30:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/ntpd-rs (Old) and /work/SRC/openSUSE:Factory/.ntpd-rs.new.1977 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "ntpd-rs" Wed Sep 10 17:30:19 2025 rev:11 rq:1303521 version:1.6.2 Changes: -------- --- /work/SRC/openSUSE:Factory/ntpd-rs/ntpd-rs.changes 2025-07-22 12:20:08.579741284 +0200 +++ /work/SRC/openSUSE:Factory/.ntpd-rs.new.1977/ntpd-rs.changes 2025-09-10 17:30:32.338283134 +0200 @@ -1,0 +2,7 @@ +Sun Sep 7 19:40:16 UTC 2025 - Martin Hauke <[email protected]> + +- Update to version 1.6.2 + * Fixed bug that could cause a message to pingpong between two + servers indefinitely. + +------------------------------------------------------------------- Old: ---- ntpd-rs-1.6.1.tar.gz New: ---- ntpd-rs-1.6.2.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ ntpd-rs.spec ++++++ --- /var/tmp/diff_new_pack.RCc68s/_old 2025-09-10 17:30:33.938350417 +0200 +++ /var/tmp/diff_new_pack.RCc68s/_new 2025-09-10 17:30:33.938350417 +0200 @@ -1,7 +1,7 @@ # # spec file for package ntpd-rs # -# Copyright (c) 2025 SUSE LLC +# Copyright (c) 2025 SUSE LLC and contributors # Copyright (c) 2024-2025, Martin Hauke <[email protected]> # # All modifications and additions to the file contributed by third parties @@ -19,7 +19,7 @@ %define services ntpd-rs.service ntpd-rs-metrics.service Name: ntpd-rs -Version: 1.6.1 +Version: 1.6.2 Release: 0 Summary: Full-featured implementation of NTP with NTS support License: Apache-2.0 OR MIT ++++++ ntpd-rs-1.6.1.tar.gz -> ntpd-rs-1.6.2.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/.github/workflows/checks.yaml new/ntpd-rs-1.6.2/.github/workflows/checks.yaml --- old/ntpd-rs-1.6.1/.github/workflows/checks.yaml 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/.github/workflows/checks.yaml 2025-08-29 15:38:06.000000000 +0200 @@ -187,6 +187,7 @@ clippy: name: Clippy + if: ${{ false }} strategy: matrix: include: @@ -292,7 +293,7 @@ toolchain: nightly components: llvm-tools-preview - name: Install cargo fuzz & rustfilt - uses: taiki-e/install-action@56ab7930c591507f833cbaed864d201386d518a8 + uses: taiki-e/install-action@6064345e6658255e90e9500fdf9a06ab77e6909c with: tool: cargo-fuzz,rustfilt - name: Run `cargo fuzz` @@ -301,12 +302,12 @@ # prevents `cargo fuzz coverage` from rebuilding everything RUSTFLAGS: "-C instrument-coverage" run: | - cargo fuzz run ${{matrix.features}} ${{matrix.fuzz_target}} ${{matrix.corpus}} -- -max_total_time=10 + cargo fuzz run --target $(rustc --print host-tuple) ${{matrix.features}} ${{matrix.fuzz_target}} ${{matrix.corpus}} -- -max_total_time=10 - name: Fuzz codecov run: | - cargo fuzz coverage ${{matrix.features}} ${{matrix.fuzz_target}} ${{matrix.corpus}} + cargo fuzz coverage --target $(rustc --print host-tuple) ${{matrix.features}} ${{matrix.fuzz_target}} ${{matrix.corpus}} $(rustc --print sysroot)/lib/rustlib/$(rustc --print host-tuple)/bin/llvm-cov export -Xdemangler=rustfilt \ - target/$(rustc --print host-tuple)/coverage/$(rustc --print host-tuple)/release/${{matrix.fuzz_target}} \ + target/x86_64-unknown-linux-musl/coverage/$(rustc --print host-tuple)/release/${{matrix.fuzz_target}} \ -instr-profile=fuzz/coverage/${{matrix.fuzz_target}}/coverage.profdata \ --format=lcov \ -ignore-filename-regex="\.cargo|\.rustup" > lcov.info diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/CHANGELOG.md new/ntpd-rs-1.6.2/CHANGELOG.md --- old/ntpd-rs-1.6.1/CHANGELOG.md 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/CHANGELOG.md 2025-08-29 15:38:06.000000000 +0200 @@ -1,5 +1,10 @@ # Changelog +## [1.6.2] - 2025-08-29 + +### Fixed +- Fixed bug that could cause a message to pingpong between two servers indefinitely. + ## [1.6.1] - 2025-07-16 ### Fixed @@ -306,6 +311,7 @@ - Fixed a bug in peer dispersion calculation which resulted in overly pessimistic dispersion estimates. +[1.6.2]: https://github.com/pendulum-project/ntpd-rs/compare/v1.6.1...v1.6.2 [1.6.1]: https://github.com/pendulum-project/ntpd-rs/compare/v1.6.0...v1.6.1 [1.6.0]: https://github.com/pendulum-project/ntpd-rs/compare/v1.5.0...v1.6.0 [1.5.0]: https://github.com/pendulum-project/ntpd-rs/compare/v1.4.0...v1.5.0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/Cargo.lock new/ntpd-rs-1.6.2/Cargo.lock --- old/ntpd-rs-1.6.1/Cargo.lock 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/Cargo.lock 2025-08-29 15:38:06.000000000 +0200 @@ -573,7 +573,7 @@ [[package]] name = "ntp-proto" -version = "1.6.1" +version = "1.6.2" dependencies = [ "aead", "aes-siv", @@ -590,7 +590,7 @@ [[package]] name = "ntpd" -version = "1.6.1" +version = "1.6.2" dependencies = [ "async-trait", "clock-steering", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/Cargo.toml new/ntpd-rs-1.6.2/Cargo.toml --- old/ntpd-rs-1.6.1/Cargo.toml 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/Cargo.toml 2025-08-29 15:38:06.000000000 +0200 @@ -11,7 +11,7 @@ # Global settings for our crates [workspace.package] -version = "1.6.1" +version = "1.6.2" edition = "2021" license = "Apache-2.0 OR MIT" repository = "https://github.com/pendulum-project/ntpd-rs" @@ -60,4 +60,4 @@ # our own crates used as dependencies, same version as the workspace version # NOTE: keep this part at the bottom of the file, do not change this line -ntp-proto = { version = "1.6.1", path = "./ntp-proto", default-features = false, features = ["__internal-api"] } +ntp-proto = { version = "1.6.2", path = "./ntp-proto", default-features = false, features = ["__internal-api"] } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/Cross.toml new/ntpd-rs-1.6.2/Cross.toml --- old/ntpd-rs-1.6.1/Cross.toml 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/Cross.toml 2025-08-29 15:38:06.000000000 +0200 @@ -3,8 +3,11 @@ [target.armv7-unknown-linux-gnueabihf] image = "ghcr.io/cross-rs/armv7-unknown-linux-gnueabihf:main" +#pre-build = [ +# "cd /usr/local/bin && curl --proto '=https' --tlsv1.2 -LsSf https://github.com/cargo-bins/cargo-quickinstall/releases/download/bindgen-cli-0.71.1/bindgen-cli-0.71.1-x86_64-unknown-linux-gnu.tar.gz | tar -zxf -" +#] pre-build = [ - "cd /usr/local/bin && curl --proto '=https' --tlsv1.2 -LsSf https://github.com/cargo-bins/cargo-quickinstall/releases/download/bindgen-cli-0.71.1/bindgen-cli-0.71.1-x86_64-unknown-linux-gnu.tar.gz | tar -zxf -" + "apt install xz-utils && curl --proto '=https' --tlsv1.2 -LsSf https://github.com/rust-lang/rust-bindgen/releases/download/v0.71.1/bindgen-cli-installer.sh | sh && cp -r /root/.cargo/bin/* /usr/local/bin/" ] [target.aarch64-unknown-linux-gnu] diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/docs/man/ntp-ctl.8.md new/ntpd-rs-1.6.2/docs/man/ntp-ctl.8.md --- old/ntpd-rs-1.6.1/docs/man/ntp-ctl.8.md 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/docs/man/ntp-ctl.8.md 2025-08-29 15:38:06.000000000 +0200 @@ -1,5 +1,5 @@ <!-- --- -title: NTP-CTL(8) ntpd-rs 1.6.1 | ntpd-rs +title: NTP-CTL(8) ntpd-rs 1.6.2 | ntpd-rs --- --> # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/docs/man/ntp-daemon.8.md new/ntpd-rs-1.6.2/docs/man/ntp-daemon.8.md --- old/ntpd-rs-1.6.1/docs/man/ntp-daemon.8.md 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/docs/man/ntp-daemon.8.md 2025-08-29 15:38:06.000000000 +0200 @@ -1,5 +1,5 @@ <!-- --- -title: NTP-DAEMON(8) ntpd-rs 1.6.1 | ntpd-rs +title: NTP-DAEMON(8) ntpd-rs 1.6.2 | ntpd-rs --- --> # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/docs/man/ntp-metrics-exporter.8.md new/ntpd-rs-1.6.2/docs/man/ntp-metrics-exporter.8.md --- old/ntpd-rs-1.6.1/docs/man/ntp-metrics-exporter.8.md 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/docs/man/ntp-metrics-exporter.8.md 2025-08-29 15:38:06.000000000 +0200 @@ -1,5 +1,5 @@ <!-- --- -title: NTP-METRICS-EXPORTER(8) ntpd-rs 1.6.1 | ntpd-rs +title: NTP-METRICS-EXPORTER(8) ntpd-rs 1.6.2 | ntpd-rs --- --> # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/docs/man/ntp.toml.5.md new/ntpd-rs-1.6.2/docs/man/ntp.toml.5.md --- old/ntpd-rs-1.6.1/docs/man/ntp.toml.5.md 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/docs/man/ntp.toml.5.md 2025-08-29 15:38:06.000000000 +0200 @@ -1,5 +1,5 @@ <!-- --- -title: NTP.TOML(5) ntpd-rs 1.6.1 | ntpd-rs +title: NTP.TOML(5) ntpd-rs 1.6.2 | ntpd-rs --- --> # NAME diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/docs/precompiled/man/ntp-ctl.8 new/ntpd-rs-1.6.2/docs/precompiled/man/ntp-ctl.8 --- old/ntpd-rs-1.6.1/docs/precompiled/man/ntp-ctl.8 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/docs/precompiled/man/ntp-ctl.8 2025-08-29 15:38:06.000000000 +0200 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "NTP-CTL" "8" "" "ntpd-rs 1.6.1" "ntpd-rs" +.TH "NTP-CTL" "8" "" "ntpd-rs 1.6.2" "ntpd-rs" .hy .SH NAME .PP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/docs/precompiled/man/ntp-daemon.8 new/ntpd-rs-1.6.2/docs/precompiled/man/ntp-daemon.8 --- old/ntpd-rs-1.6.1/docs/precompiled/man/ntp-daemon.8 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/docs/precompiled/man/ntp-daemon.8 2025-08-29 15:38:06.000000000 +0200 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "NTP-DAEMON" "8" "" "ntpd-rs 1.6.1" "ntpd-rs" +.TH "NTP-DAEMON" "8" "" "ntpd-rs 1.6.2" "ntpd-rs" .hy .SH NAME .PP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/docs/precompiled/man/ntp-metrics-exporter.8 new/ntpd-rs-1.6.2/docs/precompiled/man/ntp-metrics-exporter.8 --- old/ntpd-rs-1.6.1/docs/precompiled/man/ntp-metrics-exporter.8 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/docs/precompiled/man/ntp-metrics-exporter.8 2025-08-29 15:38:06.000000000 +0200 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "NTP-METRICS-EXPORTER" "8" "" "ntpd-rs 1.6.1" "ntpd-rs" +.TH "NTP-METRICS-EXPORTER" "8" "" "ntpd-rs 1.6.2" "ntpd-rs" .hy .SH NAME .PP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/docs/precompiled/man/ntp.toml.5 new/ntpd-rs-1.6.2/docs/precompiled/man/ntp.toml.5 --- old/ntpd-rs-1.6.1/docs/precompiled/man/ntp.toml.5 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/docs/precompiled/man/ntp.toml.5 2025-08-29 15:38:06.000000000 +0200 @@ -14,7 +14,7 @@ . ftr VB CB . ftr VBI CBI .\} -.TH "NTP.TOML" "5" "" "ntpd-rs 1.6.1" "ntpd-rs" +.TH "NTP.TOML" "5" "" "ntpd-rs 1.6.2" "ntpd-rs" .hy .SH NAME .PP diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/ntpd-rs-1.6.1/ntp-proto/src/server.rs new/ntpd-rs-1.6.2/ntp-proto/src/server.rs --- old/ntpd-rs-1.6.1/ntp-proto/src/server.rs 2025-07-16 09:24:23.000000000 +0200 +++ new/ntpd-rs-1.6.2/ntp-proto/src/server.rs 2025-08-29 15:38:06.000000000 +0200 @@ -188,7 +188,18 @@ // Try and parse the message let (packet, cookie) = match NtpPacket::deserialize(message, self.keyset.as_ref()) { - Ok(packet) => packet, + Ok((packet, cookie)) => match packet.mode() { + crate::NtpAssociationMode::Client => (packet, cookie), + _ => { + stats_handler.register( + fallback_message_version(message), + false, + ServerReason::ParseError, + ServerResponse::Ignore, + ); + return ServerAction::Ignore; + } + }, Err(PacketParsingError::DecryptError(packet)) => { // Don't care about decryption errors when denying anyway if action != ServerResponse::Deny { @@ -909,6 +920,61 @@ } #[test] + fn test_server_ignores_non_request() { + let config = ServerConfig { + denylist: FilterList { + filter: vec![], + action: FilterAction::Deny, + }, + allowlist: FilterList { + filter: vec!["0.0.0.0/0".parse().unwrap()], + action: FilterAction::Ignore, + }, + rate_limiting_cutoff: Duration::from_millis(100), + rate_limiting_cache_size: 0, + require_nts: None, + accepted_versions: vec![NtpVersion::V4], + }; + let clock = TestClock { + cur: NtpTimestamp::from_fixed_int(200), + }; + let mut stats = TestStatHandler::default(); + + let mut server = Server::new( + config, + clock, + SystemSnapshot::default(), + KeySetProvider::new(1).get(), + ); + + let (packet, _) = NtpPacket::poll_message(PollIntervalLimits::default().min); + let mut serialized = serialize_packet_unencrypted(&packet); + + for version in 0..8 { + for mode in 0..8 { + if mode == 3 { + // Client mode should be able to get responses + continue; + } + + serialized[0] = (serialized[0] & 0xC0) | (version << 3) | mode; + + let mut buf = [0; 48]; + let response = server.handle( + "127.0.0.1".parse().unwrap(), + NtpTimestamp::from_fixed_int(100), + &serialized, + &mut buf, + &mut stats, + ); + stats.last_register.take(); + + assert!(matches!(response, ServerAction::Ignore)); + } + } + } + + #[test] fn test_server_corrupted() { let config = ServerConfig { denylist: FilterList { ++++++ vendor.tar.zst ++++++ /work/SRC/openSUSE:Factory/ntpd-rs/vendor.tar.zst /work/SRC/openSUSE:Factory/.ntpd-rs.new.1977/vendor.tar.zst differ: char 7, line 1
