sudoers plugin: silence most -Wconversion warnings.

This commit is contained in:
Todd C. Miller
2023-07-07 15:07:04 -06:00
parent 4891f37a45
commit a38b714667
58 changed files with 352 additions and 322 deletions

View File

@@ -90,9 +90,9 @@ struct replay_closure {
bool interactive;
bool suspend_wait;
struct io_buffer {
unsigned int len; /* buffer length (how much produced) */
unsigned int off; /* write position (how much already consumed) */
unsigned int toread; /* how much remains to be read */
size_t len; /* buffer length (how much produced) */
size_t off; /* write position (how much already consumed) */
size_t toread; /* how much remains to be read */
int lastc; /* last char written */
char buf[64 * 1024];
} iobuf;
@@ -269,9 +269,9 @@ main(int argc, char *argv[])
if (dval <= 0.0) {
sudo_timespecclear(&max_delay_storage);
} else {
max_delay_storage.tv_sec = dval;
max_delay_storage.tv_nsec =
(dval - max_delay_storage.tv_sec) * 1000000000.0;
max_delay_storage.tv_sec = (time_t)dval;
max_delay_storage.tv_nsec = (long)
((dval - (double)max_delay_storage.tv_sec) * 1000000000.0);
}
max_delay = &max_delay_storage;
break;
@@ -857,7 +857,7 @@ fill_iobuf(struct replay_closure *closure)
if (nread <= 0) {
if (nread == 0) {
sudo_debug_printf(SUDO_DEBUG_ERROR|SUDO_DEBUG_LINENO,
"%s/%s: premature EOF, expected %u bytes",
"%s/%s: premature EOF, expected %zu bytes",
closure->iolog_dir, iolog_fd_to_name(timing->event),
closure->iobuf.toread);
} else {
@@ -869,8 +869,8 @@ fill_iobuf(struct replay_closure *closure)
closure->iolog_dir, iolog_fd_to_name(timing->event), errstr);
debug_return_bool(false);
}
closure->iobuf.toread -= nread;
closure->iobuf.len += nread;
closure->iobuf.toread -= (size_t)nread;
closure->iobuf.len += (size_t)nread;
}
debug_return_bool(true);
@@ -1096,10 +1096,11 @@ write_output(int fd, int what, void *v)
struct replay_closure *closure = v;
const struct timing_closure *timing = &closure->timing;
struct io_buffer *iobuf = &closure->iobuf;
unsigned iovcnt = 1;
int iovcnt = 1;
struct iovec iov[2];
bool added_cr = false;
size_t nbytes, nwritten;
size_t nbytes;
ssize_t nwritten;
debug_decl(write_output, SUDO_DEBUG_UTIL);
/* Refill iobuf if there is more to read and buf is empty. */
@@ -1136,7 +1137,7 @@ write_output(int fd, int what, void *v)
}
nwritten = writev(fd, iov, iovcnt);
switch ((ssize_t)nwritten) {
switch (nwritten) {
case -1:
if (errno != EINTR && errno != EAGAIN)
sudo_fatal(U_("unable to write to %s"), "stdout");
@@ -1145,9 +1146,9 @@ write_output(int fd, int what, void *v)
/* Should not happen. */
break;
default:
if (added_cr && nwritten >= nbytes - 1) {
if (added_cr && (size_t)nwritten >= nbytes - 1) {
/* The last char written was either '\r' or '\n'. */
iobuf->lastc = nwritten == nbytes ? '\n' : '\r';
iobuf->lastc = (size_t)nwritten == nbytes ? '\n' : '\r';
} else {
/* Stash the last char written. */
iobuf->lastc = *((char *)iov[0].iov_base + nwritten);
@@ -1156,7 +1157,7 @@ write_output(int fd, int what, void *v)
/* Subtract one for the carriage return we added above. */
nwritten--;
}
iobuf->off += nwritten;
iobuf->off += (size_t)nwritten;
break;
}
@@ -1266,7 +1267,7 @@ parse_expr(struct search_node_list *head, char *argv[], bool sub_expr)
goto bad;
if (!sub_expr)
sudo_fatalx("%s", U_("unmatched ')' in expression"));
debug_return_int(av - argv + 1);
debug_return_int((int)(av - argv) + 1);
default:
bad:
sudo_fatalx(U_("unknown search term \"%s\""), *av);
@@ -1309,7 +1310,7 @@ parse_expr(struct search_node_list *head, char *argv[], bool sub_expr)
if (not)
sudo_fatalx("%s", U_("illegal trailing \"!\""));
debug_return_int(av - argv);
debug_return_int((int)(av - argv));
}
static char *
@@ -1550,11 +1551,11 @@ find_sessions(const char *dir, regex_t *re, const char *user, const char *tty)
/* Check for dir with a log file. */
if (lstat(pathbuf, &sb) == 0 && S_ISREG(sb.st_mode)) {
pathbuf[sdlen + len - 4] = '\0';
pathbuf[sdlen + (size_t)(len - 4)] = '\0';
list_session(&lbuf, pathbuf, re, user, tty);
} else {
/* Strip off "/log" and recurse if a non-log dir. */
pathbuf[sdlen + len - 4] = '\0';
pathbuf[sdlen + (size_t)(len - 4)] = '\0';
if (checked_type ||
(lstat(pathbuf, &sb) == 0 && S_ISDIR(sb.st_mode)))
find_sessions(pathbuf, re, user, tty);