Module Name: src Committed By: kre Date: Thu Feb 8 02:54:07 UTC 2024
Modified Files: src/usr.bin/touch: touch.c Log Message: Check that mktime() (or timegm() the one time it is used) do not alter any of the material fields of the struct tm that was handed to it. If any were altered, then the time string passed in was not a valid time representation, and so should be rejected. This one is not an invisible change, it prevents use of things like "-t 202402300000" (which previously would have been interpreted as "-t 202403010000" - the day after the 29th of Feb in 2024). I believe this is an improvement however, and in line with the general intent that if you specify a date and time, that exact date and time is what touch should be using. It does mean that specifying "60" for the seconds field is almost guaranteed to fail on any POSIX system, as leap seconds simply don't exist there (on a non-POSIX-conforming system that uses leap seconds, the :60 should work, if specified with the correct date and time at which the leap second actually occurs). The one exception is when parsedate(3) is used, as that does not do this check (which allows things like "-1 day" on the 1st of a month to work). (This is the last of this sequence of updates to touch.c, an update to touch.1 follows). To generate a diff of this commit: cvs rdiff -u -r1.37 -r1.38 src/usr.bin/touch/touch.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.