Bug 11382 - elapsed time calculation does not account for time function possibly returning -1
Summary: elapsed time calculation does not account for time function possibly returnin...
Alias: None
Product: rsync
Classification: Unclassified
Component: core (show other bugs)
Version: 3.1.1
Hardware: All All
: P5 normal (vote)
Target Milestone: ---
Assignee: Wayne Davison
QA Contact: Rsync QA Contact
Depends on:
Reported: 2015-07-04 04:38 UTC by Brant Gurganus
Modified: 2016-04-17 23:13 UTC (History)
0 users

See Also:

patch indicating unknown bytes/sec if time() returned -1 (1.05 KB, patch)
2016-04-01 02:31 UTC, Brant Gurganus
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Brant Gurganus 2015-07-04 04:38:29 UTC
starttime currently initialized on line 1529 of main.c and endtime currently initialized on line 222 of main.c, both of which are used on line 344 are used in a manner that does not handle that time(NULL) can return -1.

Out of curiosity, I did try reading through the glibc source code for that function to find it currently does return -1, and at the glibc level, that's all that the time function does unless appropriate bridging to a kernel is implemented. I did not take the time to try looking at other libc implementations or to see under what conditions the linux kernel might return -1.

As I only see one usage on line 344, if one of those two values comes back as -1 for some reason, perhaps that information line should be ommitted or replaced since the statistic trying to be printed would not be a valid statistic if one of the two time() calls returned -1.

Glibc documents the -1 possibility at http://www.gnu.org/software/libc/manual/html_node/Simple-Calendar-Time.html#Simple-Calendar-Time
Microsoft documents the -1 possibility for their libc implementations as well at https://msdn.microsoft.com/en-us/library/1f4c8f33.aspx?f=255&MSPPError=-2147217396
Comment 1 Brant Gurganus 2016-04-01 02:31:47 UTC
Created attachment 11958 [details]
patch indicating unknown bytes/sec if time() returned -1
Comment 2 Wayne Davison 2016-04-17 23:13:28 UTC
I have checked-in a fix that outputs "UNKNOWN" for the bytes/sec value if either the start or end time is -1 (see commit d1c80404fece1cd90631ebb687e050deb18acb31). Thanks for the report!