mirror of
https://github.com/freebsd/freebsd-src
synced 2024-07-22 18:56:38 +00:00
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
This commit is contained in:
parent
73585176ff
commit
1ed44fcc44
|
@ -51,8 +51,8 @@ static bool s_flag = false; /* Pass -s to tftpd */
|
||||||
static bool w_flag = false; /* Pass -w to tftpd */
|
static bool w_flag = false; /* Pass -w to tftpd */
|
||||||
|
|
||||||
/* Helper functions*/
|
/* Helper functions*/
|
||||||
static void require_bufeq(const char *expected, ssize_t expected_len,
|
static void require_bufeq(const char *expected, size_t expected_len,
|
||||||
const char *actual, ssize_t len);
|
const char *actual, size_t len);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Receive a response from tftpd
|
* Receive a response from tftpd
|
||||||
|
@ -68,7 +68,7 @@ static void require_bufeq(const char *expected, ssize_t expected_len,
|
||||||
(struct sockaddr*)&from, &fromlen); \
|
(struct sockaddr*)&from, &fromlen); \
|
||||||
ATF_REQUIRE(r > 0); \
|
ATF_REQUIRE(r > 0); \
|
||||||
require_bufeq((hdr), sizeof(hdr), buffer, \
|
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), \
|
require_bufeq((const char*) (contents), (contents_len), \
|
||||||
&buffer[sizeof(hdr)], r - sizeof(hdr)); \
|
&buffer[sizeof(hdr)], r - sizeof(hdr)); \
|
||||||
if (protocol == PF_INET) { \
|
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
|
* @param cmd Command to send, as a char array
|
||||||
*/
|
*/
|
||||||
static void
|
static void
|
||||||
send_bytes(const void* cmd, ssize_t len)
|
send_bytes(const void *cmd, size_t len)
|
||||||
{
|
{
|
||||||
ssize_t r;
|
ssize_t r;
|
||||||
|
|
||||||
r = sendto(s, cmd, len, 0, (struct sockaddr*)(&addr), addr.ss_len);
|
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
|
static void
|
||||||
|
@ -261,16 +262,16 @@ cleanup(void)
|
||||||
|
|
||||||
/* Assert that two binary buffers are identical */
|
/* Assert that two binary buffers are identical */
|
||||||
static void
|
static void
|
||||||
require_bufeq(const char *expected, ssize_t expected_len, const char *actual,
|
require_bufeq(const char *expected, size_t expected_len, const char *actual,
|
||||||
ssize_t len)
|
size_t len)
|
||||||
{
|
{
|
||||||
ssize_t i;
|
size_t i;
|
||||||
|
|
||||||
ATF_REQUIRE_EQ_MSG(expected_len, len,
|
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++) {
|
for (i = 0; i < len; i++) {
|
||||||
ATF_REQUIRE_EQ_MSG(actual[i], expected[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]);
|
expected[i], i, actual[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -391,8 +392,8 @@ write_all(int fd, const void *buf, size_t nbytes)
|
||||||
while (nbytes > 0) {
|
while (nbytes > 0) {
|
||||||
r = write(fd, buf, nbytes);
|
r = write(fd, buf, nbytes);
|
||||||
ATF_REQUIRE(r > 0);
|
ATF_REQUIRE(r > 0);
|
||||||
nbytes -= r;
|
nbytes -= (size_t)r;
|
||||||
buf = (const char*)buf + 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);
|
fd = open("small.txt", O_RDONLY);
|
||||||
ATF_REQUIRE(fd >= 0);
|
ATF_REQUIRE(fd >= 0);
|
||||||
r = read(fd, buffer, sizeof(buffer));
|
r = read(fd, buffer, sizeof(buffer));
|
||||||
|
ATF_REQUIRE(r > 0);
|
||||||
close(fd);
|
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);
|
fd = open("medium.txt", O_RDONLY);
|
||||||
ATF_REQUIRE(fd >= 0);
|
ATF_REQUIRE(fd >= 0);
|
||||||
r = read(fd, buffer, sizeof(buffer));
|
r = read(fd, buffer, sizeof(buffer));
|
||||||
|
ATF_REQUIRE(r > 0);
|
||||||
close(fd);
|
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);
|
fd = open("small.txt", O_RDONLY);
|
||||||
ATF_REQUIRE(fd >= 0);
|
ATF_REQUIRE(fd >= 0);
|
||||||
r = read(fd, buffer, sizeof(buffer));
|
r = read(fd, buffer, sizeof(buffer));
|
||||||
|
ATF_REQUIRE(r > 0);
|
||||||
close(fd);
|
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);
|
fd = open("medium.txt", O_RDONLY);
|
||||||
ATF_REQUIRE(fd >= 0);
|
ATF_REQUIRE(fd >= 0);
|
||||||
r = read(fd, buffer, sizeof(buffer));
|
r = read(fd, buffer, sizeof(buffer));
|
||||||
|
ATF_REQUIRE(r > 0);
|
||||||
close(fd);
|
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);
|
fd = open("medium.txt", O_RDONLY);
|
||||||
ATF_REQUIRE(fd >= 0);
|
ATF_REQUIRE(fd >= 0);
|
||||||
r = read(fd, buffer, sizeof(buffer));
|
r = read(fd, buffer, sizeof(buffer));
|
||||||
|
ATF_REQUIRE(r > 0);
|
||||||
close(fd);
|
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);
|
fd = open("medium.txt", O_RDONLY);
|
||||||
ATF_REQUIRE(fd >= 0);
|
ATF_REQUIRE(fd >= 0);
|
||||||
r = read(fd, buffer, sizeof(buffer));
|
r = read(fd, buffer, sizeof(buffer));
|
||||||
|
ATF_REQUIRE(r > 0);
|
||||||
close(fd);
|
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);
|
fd = open("unix.txt", O_RDONLY);
|
||||||
ATF_REQUIRE(fd >= 0);
|
ATF_REQUIRE(fd >= 0);
|
||||||
r = read(fd, buffer, sizeof(buffer));
|
r = read(fd, buffer, sizeof(buffer));
|
||||||
|
ATF_REQUIRE(r > 0);
|
||||||
close(fd);
|
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);
|
fd = open("small.txt", O_RDONLY);
|
||||||
ATF_REQUIRE(fd >= 0);
|
ATF_REQUIRE(fd >= 0);
|
||||||
r = read(fd, buffer, sizeof(buffer));
|
r = read(fd, buffer, sizeof(buffer));
|
||||||
|
ATF_REQUIRE(r > 0);
|
||||||
close(fd);
|
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);
|
fd = open("rfc7440.txt", O_RDONLY);
|
||||||
ATF_REQUIRE(fd >= 0);
|
ATF_REQUIRE(fd >= 0);
|
||||||
r = read(fd, buffer, sizeof(buffer));
|
r = read(fd, buffer, sizeof(buffer));
|
||||||
|
ATF_REQUIRE(r > 0);
|
||||||
close(fd);
|
close(fd);
|
||||||
require_bufeq(contents, sizeof(contents), buffer, r);
|
require_bufeq(contents, sizeof(contents), buffer, (size_t)r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -104,8 +104,8 @@ unmappedaddr(struct sockaddr_in6 *sin6)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get a field from a \0 separated string */
|
/* Get a field from a \0 separated string */
|
||||||
ssize_t
|
size_t
|
||||||
get_field(int peer, char *buffer, ssize_t size)
|
get_field(int peer, char *buffer, size_t size)
|
||||||
{
|
{
|
||||||
char *cp = buffer;
|
char *cp = buffer;
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ extern int acting_as_client;
|
||||||
/*
|
/*
|
||||||
*/
|
*/
|
||||||
void unmappedaddr(struct sockaddr_in6 *sin6);
|
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
|
* Packet types
|
||||||
|
|
|
@ -68,8 +68,8 @@
|
||||||
#include <tcpd.h>
|
#include <tcpd.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static void tftp_wrq(int peer, char *, ssize_t);
|
static void tftp_wrq(int peer, char *, size_t);
|
||||||
static void tftp_rrq(int peer, char *, ssize_t);
|
static void tftp_rrq(int peer, char *, size_t);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Null-terminated directory prefix list for absolute pathname requests and
|
* 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
|
#define MAXDIRS 20
|
||||||
static struct dirlist {
|
static struct dirlist {
|
||||||
const char *name;
|
const char *name;
|
||||||
int len;
|
size_t len;
|
||||||
} dirs[MAXDIRS+1];
|
} dirs[MAXDIRS+1];
|
||||||
static int suppress_naks;
|
static int suppress_naks;
|
||||||
static int logging;
|
static int logging;
|
||||||
|
@ -392,7 +392,7 @@ main(int argc, char *argv[])
|
||||||
tp->th_opcode = ntohs(tp->th_opcode);
|
tp->th_opcode = ntohs(tp->th_opcode);
|
||||||
if (tp->th_opcode == RRQ) {
|
if (tp->th_opcode == RRQ) {
|
||||||
if (allow_ro)
|
if (allow_ro)
|
||||||
tftp_rrq(peer, tp->th_stuff, n - 1);
|
tftp_rrq(peer, tp->th_stuff, (size_t)n - 1);
|
||||||
else {
|
else {
|
||||||
tftp_log(LOG_WARNING,
|
tftp_log(LOG_WARNING,
|
||||||
"%s read access denied", peername);
|
"%s read access denied", peername);
|
||||||
|
@ -400,7 +400,7 @@ main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
} else if (tp->th_opcode == WRQ) {
|
} else if (tp->th_opcode == WRQ) {
|
||||||
if (allow_wo)
|
if (allow_wo)
|
||||||
tftp_wrq(peer, tp->th_stuff, n - 1);
|
tftp_wrq(peer, tp->th_stuff, (size_t)n - 1);
|
||||||
else {
|
else {
|
||||||
tftp_log(LOG_WARNING,
|
tftp_log(LOG_WARNING,
|
||||||
"%s write access denied", peername);
|
"%s write access denied", peername);
|
||||||
|
@ -443,7 +443,7 @@ reduce_path(char *fn)
|
||||||
}
|
}
|
||||||
|
|
||||||
static char *
|
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 **filename, char **mode)
|
||||||
{
|
{
|
||||||
char *cp;
|
char *cp;
|
||||||
|
@ -489,7 +489,7 @@ parse_header(int peer, char *recvbuffer, ssize_t size,
|
||||||
* WRQ - receive a file from the client
|
* WRQ - receive a file from the client
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
tftp_wrq(int peer, char *recvbuffer, ssize_t size)
|
tftp_wrq(int peer, char *recvbuffer, size_t size)
|
||||||
{
|
{
|
||||||
char *cp;
|
char *cp;
|
||||||
int has_options = 0, ecode;
|
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
|
* RRQ - send a file to the client
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
tftp_rrq(int peer, char *recvbuffer, ssize_t size)
|
tftp_rrq(int peer, char *recvbuffer, size_t size)
|
||||||
{
|
{
|
||||||
char *cp;
|
char *cp;
|
||||||
int has_options = 0, ecode;
|
int has_options = 0, ecode;
|
||||||
|
|
Loading…
Reference in a new issue