diff options
Diffstat (limited to 'ftp/atftp/files/patch-tftp.c')
-rw-r--r-- | ftp/atftp/files/patch-tftp.c | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/ftp/atftp/files/patch-tftp.c b/ftp/atftp/files/patch-tftp.c deleted file mode 100644 index a66573d3d229..000000000000 --- a/ftp/atftp/files/patch-tftp.c +++ /dev/null @@ -1,150 +0,0 @@ ---- tftp.c.orig 2010-10-11 11:19:25.000000000 +0800 -+++ tftp.c 2010-10-11 11:19:12.000000000 +0800 -@@ -354,7 +354,7 @@ - void make_arg(char *string, int *argc, char ***argv) - { - static char *tmp = NULL; -- int argz_len; -+ size_t argz_len; - - /* split the string to an argz vector */ - if (argz_create_sep(string, ' ', &tmp, &argz_len) != 0) -@@ -408,8 +408,7 @@ - */ - int set_peer(int argc, char **argv) - { -- struct hostent *host; /* for host name lookup */ -- struct servent *sp; /* server entry for tftp service */ -+ int port = -1; - - /* sanity check */ - if ((argc < 2) || (argc > 3)) -@@ -418,13 +417,34 @@ - return ERR; - } - -- /* get the server entry */ -- sp = getservbyname("tftp", "udp"); -- if (sp == 0) { -- fprintf(stderr, "tftp: udp/tftp, unknown service.\n"); -- return ERR; -+ /* get the server port */ -+ if (argc == 3) -+ { -+ port = htons(atoi(argv[2])); -+ if (port < 0) -+ { -+ fprintf(stderr, "%s: bad port number.\n", argv[2]); -+ data.connected = 0; -+ return ERR; -+ } -+ data.sa_peer.sin_port = port; -+ } -+ else -+ { -+ /* get the server entry */ -+ struct servent *sp; -+ sp = getservbyname("tftp", "udp"); -+ if (sp == 0) { -+ fprintf(stderr, "tftp: udp/tftp, unknown service.\n"); -+ return ERR; -+ } -+ else -+ { -+ port = sp->s_port; -+ } - } - -+ struct hostent *host; /* for host name lookup */ - /* look up the host */ - host = gethostbyname(argv[1]); - /* if valid, update s_inn structure */ -@@ -437,7 +457,7 @@ - Strncpy(data.hostname, host->h_name, - sizeof(data.hostname)); - data.hostname[sizeof(data.hostname)-1] = 0; -- data.sa_peer.sin_port = sp->s_port; -+ data.sa_peer.sin_port = port; - } - else - { -@@ -445,20 +465,8 @@ - data.connected = 0; - return ERR; - } -- /* get the server port */ -- if (argc == 3) -- { -- sp->s_port = htons(atoi(argv[2])); -- if (sp->s_port < 0) -- { -- fprintf(stderr, "%s: bad port number.\n", argv[2]); -- data.connected = 0; -- return ERR; -- } -- data.sa_peer.sin_port = sp->s_port; -- } - /* copy port number to data structure */ -- data.port = ntohs(sp->s_port); -+ data.port = ntohs(port); - - data.connected = 1; - return OK; -@@ -608,9 +616,16 @@ - exit(ERR); - } - memset(&data.sa_local, 0, sizeof(data.sa_local)); -- bind(data.sockfd, (struct sockaddr *)&data.sa_local, -- sizeof(data.sa_local)); -- getsockname(data.sockfd, (struct sockaddr *)&data.sa_local, &len); -+ if (bind(data.sockfd, (struct sockaddr *)&data.sa_local, -+ sizeof(data.sa_local)) < 0) { -+ perror("bind"); -+ exit(ERR); -+ } -+ if (getsockname(data.sockfd, (struct sockaddr *)&data.sa_local, &len) < 0) -+ { -+ perror("getsockname"); -+ exit(ERR); -+ } - - /* do the transfer */ - gettimeofday(&data.start_time, NULL); -@@ -621,7 +636,7 @@ - fsync(data.sockfd); - close(data.sockfd); - -- return OK; -+ return tftp_result; - } - - /* -@@ -712,9 +727,16 @@ - exit(ERR); - } - memset(&data.sa_local, 0, sizeof(data.sa_local)); -- bind(data.sockfd, (struct sockaddr *)&data.sa_local, -- sizeof(data.sa_local)); -- getsockname(data.sockfd, (struct sockaddr *)&data.sa_local, &len); -+ if (bind(data.sockfd, (struct sockaddr *)&data.sa_local, -+ sizeof(data.sa_local)) < 0) { -+ perror("bind"); -+ exit(ERR); -+ } -+ if (getsockname(data.sockfd, (struct sockaddr *)&data.sa_local, &len) < 0) -+ { -+ perror("getsockname"); -+ exit(ERR); -+ } - - /* do the transfer */ - gettimeofday(&data.start_time, NULL); -@@ -731,7 +753,7 @@ - fsync(data.sockfd); - close(data.sockfd); - -- return OK; -+ return tftp_result; - } - - #ifdef HAVE_MTFTP |