Page MenuHomeFreeBSD

D45132.id138283.diff
No OneTemporary

D45132.id138283.diff

diff --git a/libexec/tftpd/tftp-io.c b/libexec/tftpd/tftp-io.c
--- a/libexec/tftpd/tftp-io.c
+++ b/libexec/tftpd/tftp-io.c
@@ -71,13 +71,13 @@
#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 @@
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 @@
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;
diff --git a/libexec/tftpd/tftp-utils.h b/libexec/tftpd/tftp-utils.h
--- a/libexec/tftpd/tftp-utils.h
+++ b/libexec/tftpd/tftp-utils.h
@@ -99,7 +99,7 @@
};
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);
diff --git a/libexec/tftpd/tftp-utils.c b/libexec/tftpd/tftp-utils.c
--- a/libexec/tftpd/tftp-utils.c
+++ b/libexec/tftpd/tftp-utils.c
@@ -204,7 +204,7 @@
{ DEBUG_ACCESS, "access", "TCPd access debugging" },
{ DEBUG_NONE, NULL, "No debugging" },
};
-int packetdroppercentage = 0;
+unsigned int packetdroppercentage = 0;
int
debug_find(char *s)
diff --git a/libexec/tftpd/tftpd.c b/libexec/tftpd/tftpd.c
--- a/libexec/tftpd/tftpd.c
+++ b/libexec/tftpd/tftpd.c
@@ -160,7 +160,7 @@
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 @@
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 @@
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;

File Metadata

Mime Type
text/plain
Expires
Fri, Oct 18, 10:21 AM (1 h, 4 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14029474
Default Alt Text
D45132.id138283.diff (2 KB)

Event Timeline