tftpd: Satisfy clang-analyzer.

* Replace `random()` with `arc4random()`.
* Change some variable types.
* Drop some unused assignments.

MFC after:	3 days
Sponsored by:	Klara, Inc.
Reviewed by:	imp, markj
Differential Revision:	https://reviews.freebsd.org/D45132
This commit is contained in:
Dag-Erling Smørgrav 2024-05-10 23:15:49 +02:00
parent ae285a8cbf
commit 4d09eb87c5
4 changed files with 12 additions and 16 deletions

View File

@ -71,13 +71,13 @@ static struct errmsg {
#define DROPPACKET(s) \
if (packetdroppercentage != 0 && \
random()%100 < packetdroppercentage) { \
arc4random()%100 < packetdroppercentage) { \
tftp_log(LOG_DEBUG, "Artificial packet drop in %s", s); \
return; \
}
#define DROPPACKETn(s,n) \
if (packetdroppercentage != 0 && \
random()%100 < packetdroppercentage) { \
arc4random()%100 < packetdroppercentage) { \
tftp_log(LOG_DEBUG, "Artificial packet drop in %s", s); \
return (n); \
}
@ -156,10 +156,8 @@ send_error(int peer, int error)
pe->e_msg = strerror(error - 100);
tp->th_code = EUNDEF; /* set 'undef' errorcode */
}
strcpy(tp->th_msg, pe->e_msg);
length = strlen(pe->e_msg);
tp->th_msg[length] = '\0';
length += 5;
snprintf(tp->th_msg, MAXPKTSIZE - 4, "%s%n", pe->e_msg, &length);
length += 5; /* header and terminator */
if (debug & DEBUG_PACKETS)
tftp_log(LOG_DEBUG, "Sending ERROR %d: %s", error, tp->th_msg);
@ -330,7 +328,6 @@ send_ack(int fp, uint16_t block)
DROPPACKETn("send_ack", 0);
tp = (struct tftphdr *)buf;
size = sizeof(buf) - 2;
tp->th_opcode = htons((u_short)ACK);
tp->th_block = htons((u_short)block);
size = 4;

View File

@ -204,7 +204,7 @@ struct debugs debugs[] = {
{ DEBUG_ACCESS, "access", "TCPd access debugging" },
{ DEBUG_NONE, NULL, "No debugging" },
};
int packetdroppercentage = 0;
unsigned int packetdroppercentage = 0;
int
debug_find(char *s)

View File

@ -99,7 +99,7 @@ struct debugs {
};
extern int debug;
extern struct debugs debugs[];
extern int packetdroppercentage;
extern unsigned int packetdroppercentage;
int debug_find(char *s);
int debug_finds(char *s);
const char *debug_show(int d);

View File

@ -160,7 +160,7 @@ main(int argc, char *argv[])
options_extra_enabled = 0;
break;
case 'p':
packetdroppercentage = atoi(optarg);
packetdroppercentage = (unsigned int)atoi(optarg);
tftp_log(LOG_INFO,
"Randomly dropping %d out of 100 packets",
packetdroppercentage);
@ -451,9 +451,9 @@ static char *
parse_header(int peer, char *recvbuffer, size_t size,
char **filename, char **mode)
{
char *cp;
int i;
struct formats *pf;
char *cp;
size_t i;
*mode = NULL;
cp = recvbuffer;
@ -470,12 +470,11 @@ parse_header(int peer, char *recvbuffer, size_t size,
i = get_field(peer, cp, size);
*mode = cp;
cp += i;
/* Find the file transfer mode */
for (cp = *mode; *cp; cp++)
if (isupper(*cp))
*cp = tolower(*cp);
for (; *cp; cp++)
if (isupper((unsigned char)*cp))
*cp = tolower((unsigned char)*cp);
for (pf = formats; pf->f_mode; pf++)
if (strcmp(pf->f_mode, *mode) == 0)
break;