diff options
author | Todd C. Miller <Todd.Miller@sudo.ws> | 2023-05-05 10:20:21 -0600 |
---|---|---|
committer | Todd C. Miller <Todd.Miller@sudo.ws> | 2023-05-05 10:20:21 -0600 |
commit | b7e52eb3538d2c185e8d2947c27f18d8ec42a5c7 (patch) | |
tree | 4429a41a58343f6fd4613ac25616c1fadd90481d | |
parent | 81ac4219ebb494294bd90eb4c534626364f1cdac (diff) | |
download | sudo-b7e52eb3538d2c185e8d2947c27f18d8ec42a5c7.tar.gz |
iolog_gets: change size parameter to int to match fgets/gzgets
Return an error, setting errno to EINVAL, for negative sizes.
-rw-r--r-- | include/sudo_iolog.h | 2 | ||||
-rw-r--r-- | lib/iolog/iolog_gets.c | 10 |
2 files changed, 6 insertions, 6 deletions
diff --git a/include/sudo_iolog.h b/include/sudo_iolog.h index 599424184..7535e284b 100644 --- a/include/sudo_iolog.h +++ b/include/sudo_iolog.h @@ -119,7 +119,7 @@ bool iolog_mkpath(char *path); bool iolog_nextid(const char *iolog_dir, char sessid[7]); bool iolog_open(struct iolog_file *iol, int dfd, int iofd, const char *mode); bool iolog_write_info_file(int dfd, struct eventlog *evlog); -char *iolog_gets(struct iolog_file *iol, char *buf, size_t nbytes, const char **errsttr); +char *iolog_gets(struct iolog_file *iol, char *buf, int bufsize, const char **errsttr); const char *iolog_fd_to_name(int iofd); int iolog_openat(int fdf, const char *path, int flags); off_t iolog_seek(struct iolog_file *iol, off_t offset, int whence); diff --git a/lib/iolog/iolog_gets.c b/lib/iolog/iolog_gets.c index 0ef5a2362..38d7eae28 100644 --- a/lib/iolog/iolog_gets.c +++ b/lib/iolog/iolog_gets.c @@ -40,16 +40,16 @@ #include "sudo_iolog.h" /* - * Like gets() but for struct iolog_file. + * Like fgets() but for struct iolog_file. */ char * -iolog_gets(struct iolog_file *iol, char *buf, size_t nbytes, +iolog_gets(struct iolog_file *iol, char *buf, int bufsize, const char **errstr) { char *str; debug_decl(iolog_gets, SUDO_DEBUG_UTIL); - if (nbytes > UINT_MAX) { + if (bufsize < 0) { errno = EINVAL; if (errstr != NULL) *errstr = strerror(errno); @@ -58,7 +58,7 @@ iolog_gets(struct iolog_file *iol, char *buf, size_t nbytes, #ifdef HAVE_ZLIB_H if (iol->compressed) { - if ((str = gzgets(iol->fd.g, buf, nbytes)) == NULL) { + if ((str = gzgets(iol->fd.g, buf, bufsize)) == NULL) { if (errstr != NULL) { int errnum; *errstr = gzerror(iol->fd.g, &errnum); @@ -69,7 +69,7 @@ iolog_gets(struct iolog_file *iol, char *buf, size_t nbytes, } else #endif { - if ((str = fgets(buf, nbytes, iol->fd.f)) == NULL) { + if ((str = fgets(buf, bufsize, iol->fd.f)) == NULL) { if (errstr != NULL) *errstr = strerror(errno); } |