Hide Forgot
Description of problem: at shows incorrect time when the UTC timezone is specified Version-Release number of selected component (if applicable): at-3.1.10-48.el6.x86_64 How reproducible: Always Steps to Reproduce: - Timezone UTC: -------------------- # date Tue Mar 22 18:41:08 UTC 2016 -------------------- - at command with UTC option: -------------------- # at 17:00 UTC at> logger TEST at> <EOT> job 1 at 2016-03-23 16:00 -------------------- Actual results: -------------------- # at 17:00 UTC at> logger TEST at> <EOT> job 1 at 2016-03-23 16:00 -------------------- Expected results: -------------------- # at 17:00 UTC at> logger TEST at> <EOT> job 1 at 2016-03-23 17:00 -------------------- Additional info: "parsetime.y" is substracting 3600 when UTC is indicated in the command (isgmt).
The problem is caused by code in the parsetime subprogram in parsetime.y . exectm is moved to currtm after exectm.tm_isdst is set to -1. Nothing ever resets currtm.tm_isdst to either 0 or 1. When execution reaches line 508, currtm.tm_isdst is still -1, causing the test to pass, reducing the scheduled time by one hour. The proposed fix moves exectm to currtm before exectm.tm_isdst is set to -1. The proposed fix (based on line numbers in at-3.1.10-48.el6.i686 is 479a480 > memcpy(&currtm,&exectm,sizeof(currtm)); 482d482 < memcpy(&currtm,&exectm,sizeof(currtm));
*** Bug 1316553 has been marked as a duplicate of this bug. ***
OLD package: at-3.1.10-48.el6.i686 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: [ LOG ] :: Test :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: [ BEGIN ] :: Display date and time :: actually running 'date' Thu Oct 20 06:51:42 UTC 2016 :: [ PASS ] :: Display date and time (Expected 0, got 0) :: [ BEGIN ] :: Add event for the time +1h without UTC :: actually running ' echo 'logger TEST' |at 07:51 ' job 1 at 2016-10-20 07:51 :: [ PASS ] :: Add event for the time +1h without UTC (Expected 0, got 0) :: [ PASS ] :: File '/var/tmp/tmp.e3NBxghJ80' should contain '07:51' :: [ BEGIN ] :: Add event for time + 1h vith UTC :: actually running ' echo 'logger TEST' |at 07:51 UTC' job 2 at 2016-10-20 06:51 :: [ PASS ] :: Add event for time + 1h vith UTC (Expected 0, got 0) :: [ FAIL ] :: File '/var/tmp/tmp.0jpMp2Kj6P' should contain '07:51' 'f73d43b8-741d-47d7-aab1-5b4089ab955e' Test result: FAIL NEW package: at-3.1.10-49.el6.i686 :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: [ LOG ] :: Test :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: :: [ BEGIN ] :: Display date and time :: actually running 'date' Wed Oct 19 13:22:13 UTC 2016 :: [ PASS ] :: Display date and time (Expected 0, got 0) :: [ BEGIN ] :: Add event for the time +1h without UTC :: actually running ' echo 'logger TEST' |at 14:22 ' job 1 at 2016-10-19 14:22 :: [ PASS ] :: Add event for the time +1h without UTC (Expected 0, got 0) :: [ PASS ] :: File '/var/tmp/tmp.Uz20JfAkyW' should contain '14:22' :: [ BEGIN ] :: Add event for time + 1h vith UTC :: actually running ' echo 'logger TEST' |at 14:22 UTC' job 2 at 2016-10-19 14:22 :: [ PASS ] :: Add event for time + 1h vith UTC (Expected 0, got 0) :: [ PASS ] :: File '/var/tmp/tmp.Ozt52tJP7g' should contain '14:22' 'f5835646-25fb-4a00-addd-6c1d79d325db' Test result: PASS Since the test passed on all architectures => verified
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2017-0703.html