diff --git a/lib/eventlog/parse_json.c b/lib/eventlog/parse_json.c index d9da66106b..381aaec15d 100644 --- a/lib/eventlog/parse_json.c +++ b/lib/eventlog/parse_json.c @@ -382,11 +382,11 @@ json_store_timespec(struct json_item *item, struct timespec *ts) if (item->type != JSON_NUMBER) continue; if (strcmp(item->name, "seconds") == 0) { - ts->tv_sec = item->u.number; + ts->tv_sec = (time_t)item->u.number; continue; } if (strcmp(item->name, "nanoseconds") == 0) { - ts->tv_nsec = item->u.number; + ts->tv_nsec = (long)item->u.number; continue; } } diff --git a/lib/iolog/iolog_legacy.c b/lib/iolog/iolog_legacy.c index 7119782ba6..5ebe537d2d 100644 --- a/lib/iolog/iolog_legacy.c +++ b/lib/iolog/iolog_legacy.c @@ -84,7 +84,8 @@ iolog_parse_loginfo_legacy(FILE *fp, const char *iolog_dir, goto done; } *ep = '\0'; - evlog->submit_time.tv_sec = sudo_strtonum(cp, 0, TIME_T_MAX, &errstr); + evlog->submit_time.tv_sec = + (time_t)sudo_strtonum(cp, 0, TIME_T_MAX, &errstr); if (errstr != NULL) { sudo_warn(U_("%s: time stamp %s: %s"), iolog_dir, cp, errstr); goto done; diff --git a/lib/iolog/iolog_timing.c b/lib/iolog/iolog_timing.c index 3c519e974a..c933b4ca87 100644 --- a/lib/iolog/iolog_timing.c +++ b/lib/iolog/iolog_timing.c @@ -105,7 +105,7 @@ iolog_parse_delay(const char *cp, struct timespec *delay, } memcpy(numbuf, cp, len); numbuf[len] = '\0'; - delay->tv_sec = sudo_strtonum(numbuf, 0, TIME_T_MAX, &errstr); + delay->tv_sec = (time_t)sudo_strtonum(numbuf, 0, TIME_T_MAX, &errstr); if (errstr != NULL) { sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO, "%s: number of seconds is %s", numbuf, errstr); diff --git a/logsrvd/iolog_writer.c b/logsrvd/iolog_writer.c index c9361ff56a..b65428cf9d 100644 --- a/logsrvd/iolog_writer.c +++ b/logsrvd/iolog_writer.c @@ -150,8 +150,8 @@ evlog_new(TimeSpec *submit_time, InfoMessage **info_msgs, size_t infolen, /* Submit time. */ if (submit_time != NULL) { - evlog->submit_time.tv_sec = submit_time->tv_sec; - evlog->submit_time.tv_nsec = submit_time->tv_nsec; + evlog->submit_time.tv_sec = (time_t)submit_time->tv_sec; + evlog->submit_time.tv_nsec = (long)submit_time->tv_nsec; } /* Default values */ @@ -891,8 +891,8 @@ update_elapsed_time(TimeSpec *delta, struct timespec *elapsed) debug_decl(update_elapsed_time, SUDO_DEBUG_UTIL); /* Cannot use timespecadd since msg doesn't use struct timespec. */ - elapsed->tv_sec += delta->tv_sec; - elapsed->tv_nsec += delta->tv_nsec; + elapsed->tv_sec += (time_t)delta->tv_sec; + elapsed->tv_nsec += (long)delta->tv_nsec; while (elapsed->tv_nsec >= 1000000000) { elapsed->tv_sec++; elapsed->tv_nsec -= 1000000000; diff --git a/logsrvd/logsrvd_conf.c b/logsrvd/logsrvd_conf.c index 9a28c33f2e..ed125cd5c3 100644 --- a/logsrvd/logsrvd_conf.c +++ b/logsrvd/logsrvd_conf.c @@ -588,7 +588,7 @@ cb_server_timeout(struct logsrvd_config *config, const char *str, size_t offset) const char *errstr; debug_decl(cb_server_timeout, SUDO_DEBUG_UTIL); - timeout = sudo_strtonum(str, 0, TIME_T_MAX, &errstr); + timeout = (time_t)sudo_strtonum(str, 0, TIME_T_MAX, &errstr); if (errstr != NULL) debug_return_bool(false); @@ -794,7 +794,7 @@ cb_relay_timeout(struct logsrvd_config *config, const char *str, size_t offset) const char *errstr; debug_decl(cb_relay_timeout, SUDO_DEBUG_UTIL); - timeout = sudo_strtonum(str, 0, TIME_T_MAX, &errstr); + timeout = (time_t)sudo_strtonum(str, 0, TIME_T_MAX, &errstr); if (errstr != NULL) debug_return_bool(false); @@ -810,7 +810,7 @@ cb_relay_connect_timeout(struct logsrvd_config *config, const char *str, size_t const char *errstr; debug_decl(cb_relay_connect_timeout, SUDO_DEBUG_UTIL); - timeout = sudo_strtonum(str, 0, TIME_T_MAX, &errstr); + timeout = (time_t)sudo_strtonum(str, 0, TIME_T_MAX, &errstr); if (errstr != NULL) debug_return_bool(false); @@ -843,7 +843,7 @@ cb_retry_interval(struct logsrvd_config *config, const char *str, size_t offset) const char *errstr; debug_decl(cb_retry_interval, SUDO_DEBUG_UTIL); - interval = sudo_strtonum(str, 0, TIME_T_MAX, &errstr); + interval = (time_t)sudo_strtonum(str, 0, TIME_T_MAX, &errstr); if (errstr != NULL) debug_return_bool(false); diff --git a/logsrvd/logsrvd_journal.c b/logsrvd/logsrvd_journal.c index bb5301d5a4..e4d2083f16 100644 --- a/logsrvd/logsrvd_journal.c +++ b/logsrvd/logsrvd_journal.c @@ -443,8 +443,8 @@ journal_restart(RestartMessage *msg, uint8_t *buf, size_t buflen, } /* Seek forward to resume point. */ - target.tv_sec = msg->resume_point->tv_sec; - target.tv_nsec = msg->resume_point->tv_nsec; + target.tv_sec = (time_t)msg->resume_point->tv_sec; + target.tv_nsec = (long)msg->resume_point->tv_nsec; if (!journal_seek(&target, closure)) { sudo_warn(U_("unable to seek to [%lld, %ld] in journal file %s"), (long long)target.tv_sec, target.tv_nsec, journal_path); diff --git a/logsrvd/logsrvd_local.c b/logsrvd/logsrvd_local.c index 821f6129b7..8096d97dde 100644 --- a/logsrvd/logsrvd_local.c +++ b/logsrvd/logsrvd_local.c @@ -404,8 +404,8 @@ store_exit_local(ExitMessage *msg, uint8_t *buf, size_t len, debug_decl(store_exit_local, SUDO_DEBUG_UTIL); if (msg->run_time != NULL) { - evlog->run_time.tv_sec = msg->run_time->tv_sec; - evlog->run_time.tv_nsec = msg->run_time->tv_nsec; + evlog->run_time.tv_sec = (time_t)msg->run_time->tv_sec; + evlog->run_time.tv_nsec = (long)msg->run_time->tv_nsec; } evlog->exit_value = msg->exit_value; if (msg->signal != NULL && msg->signal[0] != '\0') { @@ -459,8 +459,8 @@ store_restart_local(RestartMessage *msg, uint8_t *buf, size_t len, int iofd; debug_decl(store_restart_local, SUDO_DEBUG_UTIL); - target.tv_sec = msg->resume_point->tv_sec; - target.tv_nsec = msg->resume_point->tv_nsec; + target.tv_sec = (time_t)msg->resume_point->tv_sec; + target.tv_nsec = (long)msg->resume_point->tv_nsec; /* We must allocate closure->evlog for iolog_path. */ closure->evlog = calloc(1, sizeof(*closure->evlog)); @@ -544,8 +544,8 @@ store_alert_local(AlertMessage *msg, uint8_t *buf, size_t len, if (closure->evlog == NULL) closure->evlog = evlog; } - alert_time.tv_sec = msg->alert_time->tv_sec; - alert_time.tv_nsec = msg->alert_time->tv_nsec; + alert_time.tv_sec = (time_t)msg->alert_time->tv_sec; + alert_time.tv_nsec = (long)msg->alert_time->tv_nsec; if (!eventlog_alert(evlog, 0, &alert_time, msg->reason, NULL)) { closure->errstr = _("error logging alert event"); diff --git a/logsrvd/sendlog.c b/logsrvd/sendlog.c index f05998fb64..888f46d21b 100644 --- a/logsrvd/sendlog.c +++ b/logsrvd/sendlog.c @@ -1142,8 +1142,8 @@ handle_commit_point(TimeSpec *commit_point, struct client_closure *closure) sudo_debug_printf(SUDO_DEBUG_INFO, "%s: commit point: [%lld, %d]", __func__, (long long)commit_point->tv_sec, commit_point->tv_nsec); - closure->committed.tv_sec = commit_point->tv_sec; - closure->committed.tv_nsec = commit_point->tv_nsec; + closure->committed.tv_sec = (time_t)commit_point->tv_sec; + closure->committed.tv_nsec = (long)commit_point->tv_nsec; debug_return_bool(true); } @@ -1518,14 +1518,14 @@ parse_timespec(struct timespec *ts, char *strval) *nsecstr++ = '\0'; ts->tv_nsec = 0; - ts->tv_sec = sudo_strtonum(strval, 0, TIME_T_MAX, &errstr); + ts->tv_sec = (time_t)sudo_strtonum(strval, 0, TIME_T_MAX, &errstr); if (errstr != NULL) { sudo_warnx(U_("%s: %s"), strval, U_(errstr)); debug_return_bool(false); } if (nsecstr != NULL) { - ts->tv_nsec = sudo_strtonum(nsecstr, 0, LONG_MAX, &errstr); + ts->tv_nsec = (long)sudo_strtonum(nsecstr, 0, LONG_MAX, &errstr); if (errstr != NULL) { sudo_warnx(U_("%s: %s"), nsecstr, U_(errstr)); debug_return_bool(false); diff --git a/plugins/sudoers/defaults.c b/plugins/sudoers/defaults.c index 3e7be03539..8b8df4d0bb 100644 --- a/plugins/sudoers/defaults.c +++ b/plugins/sudoers/defaults.c @@ -999,7 +999,7 @@ store_timespec(const char *str, struct sudo_defs_types *def) ts.tv_sec++; nsec -= 1000000000; } - ts.tv_nsec = nsec; + ts.tv_nsec = (long)nsec; } } if (sign == '-') { diff --git a/plugins/sudoers/iolog.c b/plugins/sudoers/iolog.c index cddc18d24a..5539fa40d6 100644 --- a/plugins/sudoers/iolog.c +++ b/plugins/sudoers/iolog.c @@ -498,7 +498,7 @@ iolog_deserialize_info(struct log_details *details, char * const user_info[], continue; } if (strncmp(*cur, "log_server_timeout=", sizeof("log_server_timeout=") - 1) == 0) { - details->server_timeout.tv_sec = + details->server_timeout.tv_sec = (time_t) sudo_strtonum(*cur + sizeof("log_server_timeout=") - 1, 1, TIME_T_MAX, NULL); continue; diff --git a/plugins/sudoers/log_client.c b/plugins/sudoers/log_client.c index 7f72af258c..ab97322f57 100644 --- a/plugins/sudoers/log_client.c +++ b/plugins/sudoers/log_client.c @@ -1513,8 +1513,8 @@ handle_commit_point(TimeSpec *commit_point, struct client_closure *closure) debug_return_bool(false); } - closure->committed.tv_sec = commit_point->tv_sec; - closure->committed.tv_nsec = commit_point->tv_nsec; + closure->committed.tv_sec = (time_t)commit_point->tv_sec; + closure->committed.tv_nsec = (long)commit_point->tv_nsec; sudo_debug_printf(SUDO_DEBUG_INFO, "%s: received [%lld, %d], elapsed [%lld, %ld], committed [%lld, %ld]", __func__, (long long)commit_point->tv_sec, commit_point->tv_nsec,