aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDag-Erling Smørgrav <des@FreeBSD.org>2024-04-25 18:35:15 +0000
committerDag-Erling Smørgrav <des@FreeBSD.org>2024-04-25 18:36:12 +0000
commit1ed44fcc44b2c04db330663589541608135402f4 (patch)
tree1341bc92be1f4370a252b0a9cdc1b772596902fd
parent73585176ffd84c13d68cad67c2ca81643f09075c (diff)
downloadsrc-1ed44fcc44b2c04db330663589541608135402f4.tar.gz
src-1ed44fcc44b2c04db330663589541608135402f4.zip
tftpd: Use `size_t` where appropriate.
* Limit the use of `ssize_t` to only where it's needed. * Correct one case of `int` being used for a length. MFC after: 1 week Sponsored by: Klara, Inc. Reviewed by: kevans Differential Revision: https://reviews.freebsd.org/D44954
-rw-r--r--libexec/tftpd/tests/functional.c52
-rw-r--r--libexec/tftpd/tftp-utils.c4
-rw-r--r--libexec/tftpd/tftp-utils.h2
-rw-r--r--libexec/tftpd/tftpd.c16
4 files changed, 42 insertions, 32 deletions
diff --git a/libexec/tftpd/tests/functional.c b/libexec/tftpd/tests/functional.c
index 0bdbcfe559ed..bf7b5c77c898 100644
--- a/libexec/tftpd/tests/functional.c
+++ b/libexec/tftpd/tests/functional.c
@@ -51,8 +51,8 @@ static bool s_flag = false; /* Pass -s to tftpd */
static bool w_flag = false; /* Pass -w to tftpd */
/* Helper functions*/
-static void require_bufeq(const char *expected, ssize_t expected_len,
- const char *actual, ssize_t len);
+static void require_bufeq(const char *expected, size_t expected_len,
+ const char *actual, size_t len);
/*
* Receive a response from tftpd
@@ -68,7 +68,7 @@ static void require_bufeq(const char *expected, ssize_t expected_len,
(struct sockaddr*)&from, &fromlen); \
ATF_REQUIRE(r > 0); \
require_bufeq((hdr), sizeof(hdr), buffer, \
- MIN(r, (ssize_t)sizeof(hdr))); \
+ MIN((size_t)r, sizeof(hdr))); \
require_bufeq((const char*) (contents), (contents_len), \
&buffer[sizeof(hdr)], r - sizeof(hdr)); \
if (protocol == PF_INET) { \
@@ -117,12 +117,13 @@ recv_data(uint16_t blocknum, const char* contents, size_t contents_len)
* @param cmd Command to send, as a char array
*/
static void
-send_bytes(const void* cmd, ssize_t len)
+send_bytes(const void *cmd, size_t len)
{
ssize_t r;
r = sendto(s, cmd, len, 0, (struct sockaddr*)(&addr), addr.ss_len);
- ATF_REQUIRE_EQ(r, len);
+ ATF_REQUIRE(r >= 0);
+ ATF_REQUIRE_EQ(len, (size_t)r);
}
static void
@@ -261,16 +262,16 @@ cleanup(void)
/* Assert that two binary buffers are identical */
static void
-require_bufeq(const char *expected, ssize_t expected_len, const char *actual,
- ssize_t len)
+require_bufeq(const char *expected, size_t expected_len, const char *actual,
+ size_t len)
{
- ssize_t i;
+ size_t i;
ATF_REQUIRE_EQ_MSG(expected_len, len,
- "Expected %zd bytes but got %zd", expected_len, len);
+ "Expected %zu bytes but got %zu", expected_len, len);
for (i = 0; i < len; i++) {
ATF_REQUIRE_EQ_MSG(actual[i], expected[i],
- "Expected %#hhx at position %zd; got %hhx instead",
+ "Expected %#hhx at position %zu; got %hhx instead",
expected[i], i, actual[i]);
}
}
@@ -391,8 +392,8 @@ write_all(int fd, const void *buf, size_t nbytes)
while (nbytes > 0) {
r = write(fd, buf, nbytes);
ATF_REQUIRE(r > 0);
- nbytes -= r;
- buf = (const char*)buf + r;
+ nbytes -= (size_t)r;
+ buf = (const char*)buf + (size_t)r;
}
}
@@ -804,8 +805,9 @@ TFTPD_TC_DEFINE(w_flag,, w_flag = 1;)
fd = open("small.txt", O_RDONLY);
ATF_REQUIRE(fd >= 0);
r = read(fd, buffer, sizeof(buffer));
+ ATF_REQUIRE(r > 0);
close(fd);
- require_bufeq(contents, contents_len, buffer, r);
+ require_bufeq(contents, contents_len, buffer, (size_t)r);
}
/*
@@ -841,8 +843,9 @@ TFTPD_TC_DEFINE(wrq_dropped_ack,)
fd = open("medium.txt", O_RDONLY);
ATF_REQUIRE(fd >= 0);
r = read(fd, buffer, sizeof(buffer));
+ ATF_REQUIRE(r > 0);
close(fd);
- require_bufeq((const char*)contents, 768, buffer, r);
+ require_bufeq((const char*)contents, 768, buffer, (size_t)r);
}
/*
@@ -874,8 +877,9 @@ TFTPD_TC_DEFINE(wrq_dropped_data,)
fd = open("small.txt", O_RDONLY);
ATF_REQUIRE(fd >= 0);
r = read(fd, buffer, sizeof(buffer));
+ ATF_REQUIRE(r > 0);
close(fd);
- require_bufeq(contents, contents_len, buffer, r);
+ require_bufeq(contents, contents_len, buffer, (size_t)r);
}
/*
@@ -908,8 +912,9 @@ TFTPD_TC_DEFINE(wrq_duped_data,)
fd = open("medium.txt", O_RDONLY);
ATF_REQUIRE(fd >= 0);
r = read(fd, buffer, sizeof(buffer));
+ ATF_REQUIRE(r > 0);
close(fd);
- require_bufeq((const char*)contents, 768, buffer, r);
+ require_bufeq((const char*)contents, 768, buffer, (size_t)r);
}
/*
@@ -972,8 +977,9 @@ TFTPD_TC_DEFINE(wrq_medium,)
fd = open("medium.txt", O_RDONLY);
ATF_REQUIRE(fd >= 0);
r = read(fd, buffer, sizeof(buffer));
+ ATF_REQUIRE(r > 0);
close(fd);
- require_bufeq((const char*)contents, 768, buffer, r);
+ require_bufeq((const char*)contents, 768, buffer, (size_t)r);
}
/*
@@ -1004,8 +1010,9 @@ TFTPD_TC_DEFINE(wrq_medium_window,)
fd = open("medium.txt", O_RDONLY);
ATF_REQUIRE(fd >= 0);
r = read(fd, buffer, sizeof(buffer));
+ ATF_REQUIRE(r > 0);
close(fd);
- require_bufeq((const char*)contents, 768, buffer, r);
+ require_bufeq((const char*)contents, 768, buffer, (size_t)r);
}
/*
@@ -1037,8 +1044,9 @@ TFTPD_TC_DEFINE(wrq_netascii,)
fd = open("unix.txt", O_RDONLY);
ATF_REQUIRE(fd >= 0);
r = read(fd, buffer, sizeof(buffer));
+ ATF_REQUIRE(r > 0);
close(fd);
- require_bufeq(expected, sizeof(expected), buffer, r);
+ require_bufeq(expected, sizeof(expected), buffer, (size_t)r);
}
/*
@@ -1075,8 +1083,9 @@ TFTPD_TC_DEFINE(wrq_small,)
fd = open("small.txt", O_RDONLY);
ATF_REQUIRE(fd >= 0);
r = read(fd, buffer, sizeof(buffer));
+ ATF_REQUIRE(r > 0);
close(fd);
- require_bufeq(contents, contents_len, buffer, r);
+ require_bufeq(contents, contents_len, buffer, (size_t)r);
}
/*
@@ -1162,8 +1171,9 @@ TFTPD_TC_DEFINE(wrq_window_rfc7440,)
fd = open("rfc7440.txt", O_RDONLY);
ATF_REQUIRE(fd >= 0);
r = read(fd, buffer, sizeof(buffer));
+ ATF_REQUIRE(r > 0);
close(fd);
- require_bufeq(contents, sizeof(contents), buffer, r);
+ require_bufeq(contents, sizeof(contents), buffer, (size_t)r);
}
diff --git a/libexec/tftpd/tftp-utils.c b/libexec/tftpd/tftp-utils.c
index 9754c3238d50..b309a94f7653 100644
--- a/libexec/tftpd/tftp-utils.c
+++ b/libexec/tftpd/tftp-utils.c
@@ -104,8 +104,8 @@ unmappedaddr(struct sockaddr_in6 *sin6)
}
/* Get a field from a \0 separated string */
-ssize_t
-get_field(int peer, char *buffer, ssize_t size)
+size_t
+get_field(int peer, char *buffer, size_t size)
{
char *cp = buffer;
diff --git a/libexec/tftpd/tftp-utils.h b/libexec/tftpd/tftp-utils.h
index 3fecf1fc8696..763b3b493c7e 100644
--- a/libexec/tftpd/tftp-utils.h
+++ b/libexec/tftpd/tftp-utils.h
@@ -63,7 +63,7 @@ extern int acting_as_client;
/*
*/
void unmappedaddr(struct sockaddr_in6 *sin6);
-ssize_t get_field(int peer, char *buffer, ssize_t size);
+size_t get_field(int peer, char *buffer, size_t size);
/*
* Packet types
diff --git a/libexec/tftpd/tftpd.c b/libexec/tftpd/tftpd.c
index 9b56029797ec..45e7344c86ed 100644
--- a/libexec/tftpd/tftpd.c
+++ b/libexec/tftpd/tftpd.c
@@ -68,8 +68,8 @@
#include <tcpd.h>
#endif
-static void tftp_wrq(int peer, char *, ssize_t);
-static void tftp_rrq(int peer, char *, ssize_t);
+static void tftp_wrq(int peer, char *, size_t);
+static void tftp_rrq(int peer, char *, size_t);
/*
* Null-terminated directory prefix list for absolute pathname requests and
@@ -81,7 +81,7 @@ static void tftp_rrq(int peer, char *, ssize_t);
#define MAXDIRS 20
static struct dirlist {
const char *name;
- int len;
+ size_t len;
} dirs[MAXDIRS+1];
static int suppress_naks;
static int logging;
@@ -392,7 +392,7 @@ main(int argc, char *argv[])
tp->th_opcode = ntohs(tp->th_opcode);
if (tp->th_opcode == RRQ) {
if (allow_ro)
- tftp_rrq(peer, tp->th_stuff, n - 1);
+ tftp_rrq(peer, tp->th_stuff, (size_t)n - 1);
else {
tftp_log(LOG_WARNING,
"%s read access denied", peername);
@@ -400,7 +400,7 @@ main(int argc, char *argv[])
}
} else if (tp->th_opcode == WRQ) {
if (allow_wo)
- tftp_wrq(peer, tp->th_stuff, n - 1);
+ tftp_wrq(peer, tp->th_stuff, (size_t)n - 1);
else {
tftp_log(LOG_WARNING,
"%s write access denied", peername);
@@ -443,7 +443,7 @@ reduce_path(char *fn)
}
static char *
-parse_header(int peer, char *recvbuffer, ssize_t size,
+parse_header(int peer, char *recvbuffer, size_t size,
char **filename, char **mode)
{
char *cp;
@@ -489,7 +489,7 @@ parse_header(int peer, char *recvbuffer, ssize_t size,
* WRQ - receive a file from the client
*/
void
-tftp_wrq(int peer, char *recvbuffer, ssize_t size)
+tftp_wrq(int peer, char *recvbuffer, size_t size)
{
char *cp;
int has_options = 0, ecode;
@@ -534,7 +534,7 @@ tftp_wrq(int peer, char *recvbuffer, ssize_t size)
* RRQ - send a file to the client
*/
void
-tftp_rrq(int peer, char *recvbuffer, ssize_t size)
+tftp_rrq(int peer, char *recvbuffer, size_t size)
{
char *cp;
int has_options = 0, ecode;