Revisions 1.108 and 1.109 changed convtime() to fix an overflow issue, but it was also changed so that LONG_MAX is no longer a valid value. 1.109 seemed to explicitly "fix" this, but I do not believe that this is correct. For example, there *should* be a unittest/conversion/test.c: /* maximum value */ snprintf(buf, sizeof buf, "%lu", LONG_MAX); ASSERT_LONG_EQ(convtime(buf), LONG_MAX); -- this test currently fails. PS> We noticed this because we had some oddball user that was using 2147483647 (LONG_MAX) as ClientAliveInterval. Even though this was not a useful setting, they now receive an error for this value.
Created attachment 3291 [details] unittest for LONG_MAX convtime conversions
Committed - thanks
(In reply to Damien Miller from comment #1) > Created attachment 3291 [details] > unittest for LONG_MAX convtime conversions The max value of some options (such as ClientAliveInterval, LoginGraceTime and so on) changed from 2147483647(max int:2^31 − 1) in perivious version(6.4) to 2147483646 now. Does this behaviors is work as design? Thanks a lot.
I don't think it matters - I can't imagine a SSH session lasting >68 years and needing that extra second to complete.
close bugs that were resolved in OpenSSH 8.5 release cycle