diff --git a/include/sudo_eventlog.h b/include/sudo_eventlog.h index e1c535221..94c16c3d9 100644 --- a/include/sudo_eventlog.h +++ b/include/sudo_eventlog.h @@ -73,11 +73,11 @@ enum eventlog_format { struct eventlog_config { int type; enum eventlog_format format; + size_t file_maxlen; + size_t syslog_maxlen; int syslog_acceptpri; int syslog_rejectpri; int syslog_alertpri; - int syslog_maxlen; - int file_maxlen; uid_t mailuid; bool omit_hostname; const char *logpath; @@ -146,8 +146,8 @@ void eventlog_set_format(enum eventlog_format format); void eventlog_set_syslog_acceptpri(int pri); void eventlog_set_syslog_rejectpri(int pri); void eventlog_set_syslog_alertpri(int pri); -void eventlog_set_syslog_maxlen(int len); -void eventlog_set_file_maxlen(int len); +void eventlog_set_syslog_maxlen(size_t len); +void eventlog_set_file_maxlen(size_t len); void eventlog_set_mailuid(uid_t uid); void eventlog_set_omit_hostname(bool omit_hostname); void eventlog_set_logpath(const char *path); diff --git a/lib/eventlog/eventlog.c b/lib/eventlog/eventlog.c index 22ae38a8f..e8088c146 100644 --- a/lib/eventlog/eventlog.c +++ b/lib/eventlog/eventlog.c @@ -1136,7 +1136,7 @@ do_logfile_sudo(const char *logline, const struct eventlog *evlog, sudo_warnx(U_("%s: %s"), __func__, U_("unable to allocate memory")); goto done; } - eventlog_writeln(fp, full_line, len, evl_conf->file_maxlen); + eventlog_writeln(fp, full_line, (size_t)len, evl_conf->file_maxlen); free(full_line); (void)fflush(fp); if (ferror(fp)) { diff --git a/lib/eventlog/eventlog_conf.c b/lib/eventlog/eventlog_conf.c index 8ad03851f..ed801ec33 100644 --- a/lib/eventlog/eventlog_conf.c +++ b/lib/eventlog/eventlog_conf.c @@ -139,13 +139,13 @@ eventlog_set_syslog_alertpri(int pri) } void -eventlog_set_syslog_maxlen(int len) +eventlog_set_syslog_maxlen(size_t len) { evl_conf.syslog_maxlen = len; } void -eventlog_set_file_maxlen(int len) +eventlog_set_file_maxlen(size_t len) { evl_conf.file_maxlen = len; } diff --git a/lib/eventlog/logwrap.c b/lib/eventlog/logwrap.c index 2e6994804..564cbd2de 100644 --- a/lib/eventlog/logwrap.c +++ b/lib/eventlog/logwrap.c @@ -46,10 +46,10 @@ eventlog_writeln(FILE *fp, char *line, size_t linelen, size_t maxlen) /* Maximum length too small, disable wrapping. */ outlen = fwrite(line, 1, linelen, fp); if (outlen != linelen) - debug_return_ssize_t(-1); + debug_return_size_t((size_t)-1); if (fputc('\n', fp) == EOF) - debug_return_ssize_t(-1); - debug_return_int(outlen + 1); + debug_return_size_t((size_t)-1); + debug_return_size_t(outlen + 1); } /* @@ -67,11 +67,11 @@ eventlog_writeln(FILE *fp, char *line, size_t linelen, size_t maxlen) } len = fprintf(fp, "%s%.*s\n", indent, (int)(end - beg), beg); if (len < 0) - debug_return_ssize_t(-1); - outlen += len; + debug_return_size_t((size_t)-1); + outlen += (size_t)len; while (*end == ' ') end++; - linelen -= (end - beg); + linelen -= (size_t)(end - beg); beg = end; if (indent[0] == '\0') { indent = EVENTLOG_INDENT; @@ -82,8 +82,8 @@ eventlog_writeln(FILE *fp, char *line, size_t linelen, size_t maxlen) if (linelen) { len = fprintf(fp, "%s%s\n", indent, beg); if (len < 0) - debug_return_ssize_t(-1); - outlen += len; + debug_return_size_t((size_t)-1); + outlen += (size_t)len; } debug_return_size_t(outlen); diff --git a/lib/eventlog/parse_json.c b/lib/eventlog/parse_json.c index cbf7748ec..0e4bd9d56 100644 --- a/lib/eventlog/parse_json.c +++ b/lib/eventlog/parse_json.c @@ -67,7 +67,7 @@ json_store_columns(struct json_item *item, struct eventlog *evlog) debug_return_bool(false); } - evlog->columns = item->u.number; + evlog->columns = (int)item->u.number; debug_return_bool(true); } @@ -107,7 +107,7 @@ json_store_exit_value(struct json_item *item, struct eventlog *evlog) debug_return_bool(false); } - evlog->exit_value = item->u.number; + evlog->exit_value = (int)item->u.number; debug_return_bool(true); } @@ -146,7 +146,7 @@ json_store_lines(struct json_item *item, struct eventlog *evlog) debug_return_bool(false); } - evlog->lines = item->u.number; + evlog->lines = (int)item->u.number; debug_return_bool(true); } @@ -503,7 +503,7 @@ json_parse_string(char **strp) debug_return_str(NULL); } while (src < end) { - char ch = *src++; + int ch = *src++; if (ch == '\\') { switch (*src) { case 'b': @@ -541,7 +541,7 @@ json_parse_string(char **strp) } src++; } - *dst++ = ch; + *dst++ = (char)ch; } *dst = '\0'; @@ -775,9 +775,9 @@ eventlog_json_read(FILE *fp, const char *filename) struct json_stack stack = JSON_STACK_INTIALIZER(stack); unsigned int lineno = 0; char *name = NULL; - char *cp, *buf = NULL; - size_t bufsize = 0; - ssize_t len; + char *cp, *line = NULL; + size_t len, linesize = 0; + ssize_t linelen; bool saw_comma = false; long long num; char ch; @@ -791,9 +791,9 @@ eventlog_json_read(FILE *fp, const char *filename) TAILQ_INIT(&root->items); frame = root; - while ((len = getdelim(&buf, &bufsize, '\n', fp)) != -1) { - char *ep = buf + len - 1; - cp = buf; + while ((linelen = getdelim(&line, &linesize, '\n', fp)) != -1) { + char *ep = line + linelen - 1; + cp = line; lineno++; @@ -824,12 +824,12 @@ eventlog_json_read(FILE *fp, const char *filename) switch (*cp) { case '{': if (name == NULL && frame->parent != NULL) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("objects must consist of name:value pairs")); goto bad; } if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("missing separator between values")); goto bad; } @@ -844,7 +844,7 @@ eventlog_json_read(FILE *fp, const char *filename) case '}': if (stack.depth == 0 || frame->parent == NULL || frame->parent->type != JSON_OBJECT) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("unmatched close brace")); goto bad; } @@ -855,12 +855,12 @@ eventlog_json_read(FILE *fp, const char *filename) case '[': if (frame->parent == NULL) { /* Must have an enclosing object. */ - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("unexpected array")); goto bad; } if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("missing separator between values")); goto bad; } @@ -875,7 +875,7 @@ eventlog_json_read(FILE *fp, const char *filename) case ']': if (stack.depth == 0 || frame->parent == NULL || frame->parent->type != JSON_ARRAY) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("unmatched close bracket")); goto bad; } @@ -886,7 +886,7 @@ eventlog_json_read(FILE *fp, const char *filename) case '"': if (frame->parent == NULL) { /* Must have an enclosing object. */ - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("unexpected string")); goto bad; } @@ -897,14 +897,14 @@ eventlog_json_read(FILE *fp, const char *filename) goto bad; /* TODO: allow colon on next line? */ if (*cp != ':') { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("missing colon after name")); goto bad; } cp++; } else { if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("missing separator between values")); goto bad; } @@ -918,7 +918,7 @@ eventlog_json_read(FILE *fp, const char *filename) if (strncmp(cp, "true", sizeof("true") - 1) != 0) goto parse_error; if (!expect_value) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("unexpected boolean")); goto bad; } @@ -926,7 +926,7 @@ eventlog_json_read(FILE *fp, const char *filename) if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0') goto parse_error; if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("missing separator between values")); goto bad; } @@ -940,7 +940,7 @@ eventlog_json_read(FILE *fp, const char *filename) if (strncmp(cp, "false", sizeof("false") - 1) != 0) goto parse_error; if (!expect_value) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("unexpected boolean")); goto bad; } @@ -948,7 +948,7 @@ eventlog_json_read(FILE *fp, const char *filename) if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0') goto parse_error; if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("missing separator between values")); goto bad; } @@ -962,7 +962,7 @@ eventlog_json_read(FILE *fp, const char *filename) if (strncmp(cp, "null", sizeof("null") - 1) != 0) goto parse_error; if (!expect_value) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("unexpected null")); goto bad; } @@ -970,7 +970,7 @@ eventlog_json_read(FILE *fp, const char *filename) if (*cp != ',' && !isspace((unsigned char)*cp) && *cp != '\0') goto parse_error; if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("missing separator between values")); goto bad; } @@ -983,7 +983,7 @@ eventlog_json_read(FILE *fp, const char *filename) case '+': case '-': case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': if (!expect_value) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("unexpected number")); goto bad; } @@ -992,14 +992,14 @@ eventlog_json_read(FILE *fp, const char *filename) ch = cp[len]; cp[len] = '\0'; if (!saw_comma && !TAILQ_EMPTY(&frame->items)) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("missing separator between values")); goto bad; } saw_comma = false; num = sudo_strtonum(cp, LLONG_MIN, LLONG_MAX, &errstr); if (errstr != NULL) { - sudo_warnx("%s:%u:%td: %s: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s: %s", filename, lineno, cp - line, cp, U_(errstr)); goto bad; } @@ -1018,10 +1018,10 @@ eventlog_json_read(FILE *fp, const char *filename) if (stack.depth != 0) { frame = stack.frames[stack.depth - 1]; if (frame->parent == NULL || frame->parent->type == JSON_OBJECT) { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("unmatched close brace")); } else { - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("unmatched close bracket")); } goto bad; @@ -1030,12 +1030,12 @@ eventlog_json_read(FILE *fp, const char *filename) goto done; parse_error: - sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - buf, U_("parse error")); + sudo_warnx("%s:%u:%td: %s", filename, lineno, cp - line, U_("parse error")); bad: eventlog_json_free(root); root = NULL; done: - free(buf); + free(line); free(name); debug_return_ptr(root); diff --git a/lib/eventlog/regress/eventlog_store/store_json_test.c b/lib/eventlog/regress/eventlog_store/store_json_test.c index 43be33522..611630bec 100644 --- a/lib/eventlog/regress/eventlog_store/store_json_test.c +++ b/lib/eventlog/regress/eventlog_store/store_json_test.c @@ -69,7 +69,7 @@ compare(FILE *fp, const char *infile, struct json_container *jsonc) if (line[len - 1] == '\n') len--; - if (strncmp(line, cp, len) != 0) { + if (strncmp(line, cp, (size_t)len) != 0) { fprintf(stderr, "%s: mismatch on line %u\n", infile, lineno); fprintf(stderr, "expected: %s", line); fprintf(stderr, "got : %.*s\n", (int)len, cp); diff --git a/lib/eventlog/regress/eventlog_store/store_sudo_test.c b/lib/eventlog/regress/eventlog_store/store_sudo_test.c index 6b73a2f15..b407324ca 100644 --- a/lib/eventlog/regress/eventlog_store/store_sudo_test.c +++ b/lib/eventlog/regress/eventlog_store/store_sudo_test.c @@ -51,7 +51,7 @@ compare(FILE *fp, const char *infile, const char *output) /* Expect two log lines, one for accept, one for exit. */ for (i = 0; i < 2; i++) { - ssize_t output_len = strcspn(output, "\n"); + ssize_t output_len = (ssize_t)strcspn(output, "\n"); ssize_t len = getdelim(&line, &linesize, '\n', fp); if (len == -1) { sudo_warn("getdelim"); @@ -60,7 +60,7 @@ compare(FILE *fp, const char *infile, const char *output) if (line[len - 1] == '\n') len--; - if (len != output_len || strncmp(line, output, len) != 0) { + if (len != output_len || strncmp(line, output, (size_t)len) != 0) { fprintf(stderr, "%s: %s mismatch\n", infile, i ? "exit" : "accept"); fprintf(stderr, "expected: %.*s\n", (int)len, line); fprintf(stderr, "got : %.*s\n", (int)output_len, output); diff --git a/lib/eventlog/regress/logwrap/check_wrap.c b/lib/eventlog/regress/logwrap/check_wrap.c index 9563ffb8a..836406be1 100644 --- a/lib/eventlog/regress/logwrap/check_wrap.c +++ b/lib/eventlog/regress/logwrap/check_wrap.c @@ -98,11 +98,11 @@ main(int argc, char *argv[]) dash = strchr(cp, '-'); if (dash != NULL) { *dash = '\0'; - len = sudo_strtonum(cp, 0, INT_MAX, &errstr); + len = (size_t)sudo_strtonum(cp, 0, INT_MAX, &errstr); if (errstr == NULL) - maxlen = sudo_strtonum(dash + 1, 0, INT_MAX, &errstr); + maxlen = (size_t)sudo_strtonum(dash + 1, 0, INT_MAX, &errstr); } else { - len = maxlen = sudo_strtonum(cp, 0, INT_MAX, &errstr); + len = maxlen = (size_t)sudo_strtonum(cp, 0, INT_MAX, &errstr); } if (errstr != NULL) { sudo_fatalx("%s: invalid length on line %d", infile, lineno); diff --git a/lib/eventlog/regress/parse_json/check_parse_json.c b/lib/eventlog/regress/parse_json/check_parse_json.c index 077fd9b7f..350595fb4 100644 --- a/lib/eventlog/regress/parse_json/check_parse_json.c +++ b/lib/eventlog/regress/parse_json/check_parse_json.c @@ -155,7 +155,7 @@ compare(FILE *fp, const char *infile, struct json_container *jsonc) if (line[len - 1] == '\n') len--; - if (strncmp(line, cp, len) != 0) { + if (strncmp(line, cp, (size_t)len) != 0) { fprintf(stderr, "%s: mismatch on line %u\n", infile, lineno); fprintf(stderr, "expected: %s", line); fprintf(stderr, "got : %.*s\n", (int)len, cp);