Check the return value of gettimeofday(), even though it should

never fail.
This commit is contained in:
Todd C. Miller
2015-02-25 07:10:25 -07:00
parent 5d2e9426b2
commit 973286c7ac
4 changed files with 24 additions and 10 deletions

View File

@@ -636,7 +636,8 @@ sudoers_io_open(unsigned int version, sudo_conv_t conversation,
goto done;
/* Write log file with user and command details. */
gettimeofday(&last_time, NULL);
if (gettimeofday(&last_time, NULL) == -1)
goto done;
write_info_log(pathbuf, len, &details, argv, &last_time);
/* Create the timing and I/O log files. */

View File

@@ -429,9 +429,16 @@ edit_sudoers(struct sudoersfile *sp, char *editor, char *args, int lineno)
* XPG4 specifies that vi's exit value is a function of the
* number of errors during editing (?!?!).
*/
gettimeofday(&times[0], NULL);
if (gettimeofday(&times[0], NULL) == -1) {
sudo_warn(U_("unable to read the clock"));
goto done;
}
if (run_command(editor, av) != -1) {
gettimeofday(&times[1], NULL);
if (gettimeofday(&times[1], NULL) == -1) {
sudo_warn(U_("unable to read the clock"));
goto done;
}
/*
* Sanity checks.
*/

View File

@@ -600,7 +600,10 @@ sudo_edit(struct command_details *command_details)
* Run the editor with the invoking user's creds,
* keeping track of the time spent in the editor.
*/
gettimeofday(&times[0], NULL);
if (gettimeofday(&times[0], NULL) == -1) {
sudo_warn(U_("unable to read the clock"));
goto cleanup;
}
memcpy(&saved_command_details, command_details, sizeof(struct command_details));
command_details->uid = user_details.uid;
command_details->euid = user_details.uid;
@@ -610,7 +613,10 @@ sudo_edit(struct command_details *command_details)
command_details->groups = user_details.groups;
command_details->argv = nargv;
rval = run_command(command_details);
gettimeofday(&times[1], NULL);
if (gettimeofday(&times[1], NULL) == -1) {
sudo_warn(U_("unable to read the clock"));
goto cleanup;
}
/* Restore saved command_details. */
command_details->uid = saved_command_details.uid;

View File

@@ -126,14 +126,14 @@ utmp_settime(sudo_utmp_t *ut)
struct timeval tv;
debug_decl(utmp_settime, SUDO_DEBUG_UTMP)
gettimeofday(&tv, NULL);
if (gettimeofday(&tv, NULL) == 0) {
#if defined(HAVE_STRUCT_UTMP_UT_TV) || defined(HAVE_STRUCT_UTMPX_UT_TV)
ut->ut_tv.tv_sec = tv.tv_sec;
ut->ut_tv.tv_usec = tv.tv_usec;
ut->ut_tv.tv_sec = tv.tv_sec;
ut->ut_tv.tv_usec = tv.tv_usec;
#else
ut->ut_time = tv.tv_sec;
ut->ut_time = tv.tv_sec;
#endif
}
debug_return;
}