Page MenuHomeFreeBSD

D57105.id178143.diff
No OneTemporary

D57105.id178143.diff

diff --git a/usr.bin/tftp/main.c b/usr.bin/tftp/main.c
--- a/usr.bin/tftp/main.c
+++ b/usr.bin/tftp/main.c
@@ -331,6 +331,8 @@
}
freeaddrinfo(res0);
+ free(port);
+ port = strdup(lport);
}
static void
@@ -350,10 +352,9 @@
printf("usage: %s [host [port]]\n", argv[0]);
return;
}
- if (argc == 3) {
- port = argv[2];
+ if (argc == 3)
setpeer0(argv[1], argv[2]);
- } else
+ else
setpeer0(argv[1], NULL);
}
diff --git a/usr.bin/tftp/tftp.c b/usr.bin/tftp/tftp.c
--- a/usr.bin/tftp/tftp.c
+++ b/usr.bin/tftp/tftp.c
@@ -64,8 +64,9 @@
xmitfile(int peer, char *port, int fd, char *name, char *mode)
{
struct tftphdr *rp;
+ struct servent *se;
int n, i, ret = 0;
- uint16_t block;
+ uint16_t block, portn;
struct sockaddr_storage serv; /* valid server port number */
char recvbuffer[MAXPKTSIZE];
struct tftp_stats tftp_stats;
@@ -75,14 +76,15 @@
memset(&serv, 0, sizeof(serv));
rp = (struct tftphdr *)recvbuffer;
- if (port == NULL) {
- struct servent *se;
- se = getservbyname("tftp", "udp");
- assert(se != NULL);
- ((struct sockaddr_in *)&peer_sock)->sin_port = se->s_port;
- } else
- ((struct sockaddr_in *)&peer_sock)->sin_port =
- htons(atoi(port));
+ if ((se = getservbyname(port ? port : "tftp", "udp")) != NULL)
+ portn = se->s_port;
+ else
+ portn = htons(atoi(port));
+ if (portn == 0) {
+ printf("Invalid port '%s'.\n", port ? port : "tftp");
+ return -1;
+ }
+ ((struct sockaddr_in *)&peer_sock)->sin_port = portn;
for (i = 0; i < 12; i++) {
struct sockaddr_storage from;

File Metadata

Mime Type
text/plain
Expires
Tue, Jul 14, 12:23 AM (9 h, 39 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
35049935
Default Alt Text
D57105.id178143.diff (1 KB)

Event Timeline