From e254ac26b5dd012bbb70d168f1da0edde46b608d Mon Sep 17 00:00:00 2001 From: yuanhui Date: Wed, 15 Mar 2023 16:00:54 +0800 Subject: [PATCH] Init tftp for AnolisOS 23 Signed-off-by: yuanhui --- 0001-tftp-0.40-remap.patch | 19 +++ 0002-tftp-hpa-0.39-tzfix.patch | 18 ++ 0003-tftp-0.42-tftpboot.patch | 54 ++++++ 0004-tftp-0.49-chk_retcodes.patch | 15 ++ 0005-tftp-hpa-0.49-fortify-strcpy-crash.patch | 26 +++ 0006-tftp-0.49-cmd_arg.patch | 159 ++++++++++++++++++ 0007-tftp-hpa-0.49-stats.patch | 14 ++ 0008-tftp-hpa-5.2-pktinfo.patch | 23 +++ 0009-tftp-doc.patch | 45 +++++ 0010-tftp-enhanced-logging.patch | 84 +++++++++ 0011-tftp-hpa-5.2-gcc10.patch | 12 ++ 0012-tftp-off-by-one.patch | 44 +++++ 0013-tftp-c99.patch | 50 ++++++ ...er-only-prerequisite-of-aconfig.h.in.patch | 76 +++++++++ tftp-hpa-5.2.tar.bz2 | Bin 0 -> 93992 bytes tftp.service | 11 ++ tftp.socket | 8 + tftp.spec | 112 ++++++++++++ 18 files changed, 770 insertions(+) create mode 100644 0001-tftp-0.40-remap.patch create mode 100644 0002-tftp-hpa-0.39-tzfix.patch create mode 100644 0003-tftp-0.42-tftpboot.patch create mode 100644 0004-tftp-0.49-chk_retcodes.patch create mode 100644 0005-tftp-hpa-0.49-fortify-strcpy-crash.patch create mode 100644 0006-tftp-0.49-cmd_arg.patch create mode 100644 0007-tftp-hpa-0.49-stats.patch create mode 100644 0008-tftp-hpa-5.2-pktinfo.patch create mode 100644 0009-tftp-doc.patch create mode 100644 0010-tftp-enhanced-logging.patch create mode 100644 0011-tftp-hpa-5.2-gcc10.patch create mode 100644 0012-tftp-off-by-one.patch create mode 100644 0013-tftp-c99.patch create mode 100644 0014-Make-configure-an-order-only-prerequisite-of-aconfig.h.in.patch create mode 100644 tftp-hpa-5.2.tar.bz2 create mode 100644 tftp.service create mode 100644 tftp.socket create mode 100644 tftp.spec diff --git a/0001-tftp-0.40-remap.patch b/0001-tftp-0.40-remap.patch new file mode 100644 index 0000000..755a307 --- /dev/null +++ b/0001-tftp-0.40-remap.patch @@ -0,0 +1,19 @@ +diff -up tftp-hpa-0.49/tftpd/remap.c.zero tftp-hpa-0.49/tftpd/remap.c +--- tftp-hpa-0.49/tftpd/remap.c.zero 2008-10-20 18:08:31.000000000 -0400 ++++ tftp-hpa-0.49/tftpd/remap.c 2008-11-25 11:41:09.000000000 -0500 +@@ -286,6 +286,7 @@ struct rule *parserulefile(FILE * f) + int lineno = 0; + int err = 0; + ++ memset(this_rule, '\0', sizeof(struct rule)); + while (lineno++, fgets(line, MAXLINE, f)) { + rv = parseline(line, this_rule, lineno); + if (rv < 0) +@@ -294,6 +295,7 @@ struct rule *parserulefile(FILE * f) + *last_rule = this_rule; + last_rule = &this_rule->next; + this_rule = tfmalloc(sizeof(struct rule)); ++ memset(this_rule, '\0', sizeof(struct rule)); + } + } + diff --git a/0002-tftp-hpa-0.39-tzfix.patch b/0002-tftp-hpa-0.39-tzfix.patch new file mode 100644 index 0000000..ded02ef --- /dev/null +++ b/0002-tftp-hpa-0.39-tzfix.patch @@ -0,0 +1,18 @@ +diff -up tftp-hpa-0.49/tftpd/tftpd.c.tzfix tftp-hpa-0.49/tftpd/tftpd.c +--- tftp-hpa-0.49/tftpd/tftpd.c.tzfix 2008-10-20 18:08:31.000000000 -0400 ++++ tftp-hpa-0.49/tftpd/tftpd.c 2008-11-25 11:45:27.000000000 -0500 +@@ -350,6 +350,14 @@ int main(int argc, char **argv) + const char *pidfile = NULL; + u_short tp_opcode; + ++ time_t my_time = 0; ++ struct tm* p_tm; ++ char envtz[10]; ++ my_time = time(NULL); ++ p_tm = localtime(&my_time); ++ snprintf(envtz, sizeof(envtz) - 1, "UTC%+d", (p_tm->tm_gmtoff * -1)/3600); ++ setenv("TZ", envtz, 0); ++ + /* basename() is way too much of a pain from a portability standpoint */ + + p = strrchr(argv[0], '/'); diff --git a/0003-tftp-0.42-tftpboot.patch b/0003-tftp-0.42-tftpboot.patch new file mode 100644 index 0000000..a0de58d --- /dev/null +++ b/0003-tftp-0.42-tftpboot.patch @@ -0,0 +1,54 @@ +diff -up tftp-hpa-0.48/tftp-xinetd.tftpboot tftp-hpa-0.48/tftp-xinetd +--- tftp-hpa-0.48/tftp-xinetd.tftpboot 2007-01-31 00:51:05.000000000 +0100 ++++ tftp-hpa-0.48/tftp-xinetd 2008-05-20 12:05:53.000000000 +0200 +@@ -10,7 +10,7 @@ service tftp + wait = yes + user = root + server = /usr/sbin/in.tftpd +- server_args = -s /tftpboot ++ server_args = -s /var/lib/tftpboot + disable = yes + per_source = 11 + cps = 100 2 +diff -up tftp-hpa-0.48/README.security.tftpboot tftp-hpa-0.48/README.security +--- tftp-hpa-0.48/README.security.tftpboot 2008-05-29 17:36:32.000000000 +0200 ++++ tftp-hpa-0.48/README.security 2008-05-29 17:37:21.000000000 +0200 +@@ -17,10 +17,10 @@ probably the following: + + 1. Create a separate "tftpd" user and group only used for tftpd; + 2. Have all your boot files in a single directory tree (usually called +- /tftpboot). +-3. Specify "-p -u tftpd -s /tftpboot" on the tftpd command line; if ++ /var/lib/tftpboot). ++3. Specify "-p -u tftpd -s /var/lib/tftpboot" on the tftpd command line; if + you want clients to be able to create files use +- "-p -c -U 002 -u tftpd -s /tftpboot" (replace 002 with whatever ++ "-p -c -U 002 -u tftpd -s /var/lib/tftpboot" (replace 002 with whatever + umask is appropriate for your setup.) + + ======================================= +@@ -40,12 +40,12 @@ directly. Thus, if your /etc/inetd.conf + line): + + tftp dgram udp wait root /usr/sbin/tcpd +-/usr/sbin/in.tftpd -s /tftpboot -r blksize ++/usr/sbin/in.tftpd -s /var/lib/tftpboot -r blksize + + ... it's better to change to ... + + tftp dgram udp wait root /usr/sbin/in.tftpd +-in.tftpd -s /tftpboot -r blksize ++in.tftpd -s /var/lib/tftpboot -r blksize + + You should make sure that you are using "wait" option in tftpd; you + also need to have tftpd spawned as root in order for chroot (-s) to +diff -up tftp-hpa-0.48/tftpd/sample.rules.tftpboot tftp-hpa-0.48/tftpd/sample.rules +--- tftp-hpa-0.48/tftpd/sample.rules.tftpboot 2008-05-29 17:38:46.000000000 +0200 ++++ tftp-hpa-0.48/tftpd/sample.rules 2008-05-29 17:38:05.000000000 +0200 +@@ -30,5 +30,5 @@ rg \\ / # Convert backslashes to slash + rg \# @ # Convert hash marks to @ signs + rg /../ /..no../ # Convert /../ to /..no../ + e ^ok/ # These are always ok +-r ^[^/] /tftpboot/\0 # Convert non-absolute files ++r ^[^/] /var/lib/tftpboot/\0 # Convert non-absolute files + a \.pvt$ # Reject requests for private files diff --git a/0004-tftp-0.49-chk_retcodes.patch b/0004-tftp-0.49-chk_retcodes.patch new file mode 100644 index 0000000..6d63571 --- /dev/null +++ b/0004-tftp-0.49-chk_retcodes.patch @@ -0,0 +1,15 @@ +diff -up tftp-hpa-0.49/tftpd/tftpd.c.chk_retcodes tftp-hpa-0.49/tftpd/tftpd.c +--- tftp-hpa-0.49/tftpd/tftpd.c.chk_retcodes 2009-01-15 15:28:50.000000000 +0100 ++++ tftp-hpa-0.49/tftpd/tftpd.c 2009-01-15 15:31:36.000000000 +0100 +@@ -932,7 +932,10 @@ int main(int argc, char **argv) + exit(EX_OSERR); + } + #ifdef __CYGWIN__ +- chdir("/"); /* Cygwin chroot() bug workaround */ ++ if (chdir("/") < 0) { /* Cygwin chroot() bug workaround */ ++ syslog(LOG_ERR, "chroot: %m"); ++ exit(EX_OSERR); ++ } + #endif + } + #ifdef HAVE_SETREGID diff --git a/0005-tftp-hpa-0.49-fortify-strcpy-crash.patch b/0005-tftp-hpa-0.49-fortify-strcpy-crash.patch new file mode 100644 index 0000000..e9b70d4 --- /dev/null +++ b/0005-tftp-hpa-0.49-fortify-strcpy-crash.patch @@ -0,0 +1,26 @@ +diff -urN tftp-hpa-0.49.orig/tftp/tftp.c tftp-hpa-0.49/tftp/tftp.c +--- tftp-hpa-0.49.orig/tftp/tftp.c 2008-10-20 18:08:31.000000000 -0400 ++++ tftp-hpa-0.49/tftp/tftp.c 2009-08-05 09:47:18.072585848 -0400 +@@ -279,15 +279,16 @@ + struct tftphdr *tp, const char *mode) + { + char *cp; ++ size_t len; + + tp->th_opcode = htons((u_short) request); + cp = (char *)&(tp->th_stuff); +- strcpy(cp, name); +- cp += strlen(name); +- *cp++ = '\0'; +- strcpy(cp, mode); +- cp += strlen(mode); +- *cp++ = '\0'; ++ len = strlen(name) + 1; ++ memcpy(cp, name, len); ++ cp += len; ++ len = strlen(mode) + 1; ++ memcpy(cp, mode, len); ++ cp += len; + return (cp - (char *)tp); + } + diff --git a/0006-tftp-0.49-cmd_arg.patch b/0006-tftp-0.49-cmd_arg.patch new file mode 100644 index 0000000..2b9023a --- /dev/null +++ b/0006-tftp-0.49-cmd_arg.patch @@ -0,0 +1,159 @@ +diff -up tftp-hpa-0.49/config.h.cmd_arg tftp-hpa-0.49/config.h +--- tftp-hpa-0.49/config.h.cmd_arg 2010-04-19 15:29:10.567331454 +0200 ++++ tftp-hpa-0.49/config.h 2010-04-20 07:33:03.133232772 +0200 +@@ -291,6 +291,7 @@ typedef int socklen_t; + /* Prototypes for libxtra functions */ + + void *xmalloc(size_t); ++void *xrealloc(void *, size_t); + char *xstrdup(const char *); + + #ifndef HAVE_BSD_SIGNAL +diff -up tftp-hpa-0.49/configure.in.cmd_arg tftp-hpa-0.49/configure.in +--- tftp-hpa-0.49/configure.in.cmd_arg 2008-10-21 00:08:31.000000000 +0200 ++++ tftp-hpa-0.49/configure.in 2010-04-19 11:05:12.387340698 +0200 +@@ -152,6 +152,7 @@ OBJROOT=`pwd` + + XTRA=false + PA_SEARCH_LIBS_AND_ADD(xmalloc, iberty) ++PA_SEARCH_LIBS_AND_ADD(xrealloc, iberty) + PA_SEARCH_LIBS_AND_ADD(xstrdup, iberty) + PA_SEARCH_LIBS_AND_ADD(bsd_signal, bsd, bsdsignal) + PA_SEARCH_LIBS_AND_ADD(getopt_long, getopt, getopt_long) +diff -up tftp-hpa-0.49/lib/xrealloc.c.cmd_arg tftp-hpa-0.49/lib/xrealloc.c +--- tftp-hpa-0.49/lib/xrealloc.c.cmd_arg 2010-04-19 11:05:12.387340698 +0200 ++++ tftp-hpa-0.49/lib/xrealloc.c 2010-04-19 11:05:12.387340698 +0200 +@@ -0,0 +1,20 @@ ++/* ++ * xrealloc.c ++ * ++ * Simple error-checking version of realloc() ++ * ++ */ ++ ++#include "config.h" ++ ++void *xrealloc(void *ptr, size_t size) ++{ ++ void *p = realloc(ptr, size); ++ ++ if (!p) { ++ fprintf(stderr, "Out of memory!\n"); ++ exit(128); ++ } ++ ++ return p; ++} +diff -up tftp-hpa-0.49/tftp/main.c.cmd_arg tftp-hpa-0.49/tftp/main.c +--- tftp-hpa-0.49/tftp/main.c.cmd_arg 2008-10-21 00:08:31.000000000 +0200 ++++ tftp-hpa-0.49/tftp/main.c 2010-04-19 11:05:12.389329337 +0200 +@@ -89,11 +89,14 @@ int connected; + const struct modes *mode; + #ifdef WITH_READLINE + char *line = NULL; ++char *remote_pth = NULL; + #else + char line[LBUFLEN]; ++char remote_pth[LBUFLEN]; + #endif + int margc; +-char *margv[20]; ++char **margv; ++int sizeof_margv=0; + const char *prompt = "tftp> "; + sigjmp_buf toplevel; + void intr(int); +@@ -379,6 +382,10 @@ static void getmoreargs(const char *part + free(line); + line = NULL; + } ++ if (remote_pth) { ++ free(remote_pth); ++ remote_pth = NULL; ++ } + line = xmalloc(len + elen + 1); + strcpy(line, partial); + strcpy(line + len, eline); +@@ -535,6 +542,7 @@ void put(int argc, char *argv[]) + int fd; + int n, err; + char *cp, *targ; ++ long dirlen, namelen, lastlen=0; + + if (argc < 2) { + getmoreargs("send ", "(file) "); +@@ -588,9 +596,22 @@ void put(int argc, char *argv[]) + } + /* this assumes the target is a directory */ + /* on a remote unix system. hmmmm. */ +- cp = strchr(targ, '\0'); +- *cp++ = '/'; ++ dirlen = strlen(targ)+1; ++#ifdef WITH_READLINE ++ remote_pth = xmalloc(dirlen+1); ++#endif ++ strcpy(remote_pth, targ); ++ remote_pth[dirlen-1] = '/'; ++ cp = remote_pth + dirlen; + for (n = 1; n < argc - 1; n++) { ++#ifdef WITH_READLINE ++ namelen = strlen(tail(argv[n])) + 1; ++ if (namelen > lastlen) { ++ remote_pth = xrealloc(remote_pth, dirlen + namelen + 1); ++ cp = remote_pth + dirlen; ++ lastlen = namelen; ++ } ++#endif + strcpy(cp, tail(argv[n])); + fd = open(argv[n], O_RDONLY | mode->m_openflags); + if (fd < 0) { +@@ -600,9 +621,9 @@ void put(int argc, char *argv[]) + } + if (verbose) + printf("putting %s to %s:%s [%s]\n", +- argv[n], hostname, targ, mode->m_mode); ++ argv[n], hostname, remote_pth, mode->m_mode); + sa_set_port(&peeraddr, port); +- tftp_sendfile(fd, targ, mode->m_mode); ++ tftp_sendfile(fd, remote_pth, mode->m_mode); + } + } + +@@ -801,6 +822,10 @@ static void command(void) + free(line); + line = NULL; + } ++ if (remote_pth) { ++ free(remote_pth); ++ remote_pth = NULL; ++ } + line = readline(prompt); + if (!line) + exit(0); /* EOF */ +@@ -872,7 +897,13 @@ struct cmd *getcmd(char *name) + static void makeargv(void) + { + char *cp; +- char **argp = margv; ++ char **argp; ++ ++ if (!sizeof_margv) { ++ sizeof_margv = 20; ++ margv = xmalloc(sizeof_margv * sizeof(char *)); ++ } ++ argp = margv; + + margc = 0; + for (cp = line; *cp;) { +@@ -882,6 +913,11 @@ static void makeargv(void) + break; + *argp++ = cp; + margc += 1; ++ if (margc == sizeof_margv) { ++ sizeof_margv += 20; ++ margv = xrealloc(margv, sizeof_margv * sizeof(char *)); ++ argp = margv + margc; ++ } + while (*cp != '\0' && !isspace(*cp)) + cp++; + if (*cp == '\0') diff --git a/0007-tftp-hpa-0.49-stats.patch b/0007-tftp-hpa-0.49-stats.patch new file mode 100644 index 0000000..b6c9d05 --- /dev/null +++ b/0007-tftp-hpa-0.49-stats.patch @@ -0,0 +1,14 @@ +diff -up tftp-hpa-0.49/tftp/tftp.c.stats tftp-hpa-0.49/tftp/tftp.c +--- tftp-hpa-0.49/tftp/tftp.c.stats 2011-01-03 15:38:34.217918067 +0100 ++++ tftp-hpa-0.49/tftp/tftp.c 2011-01-03 15:38:37.498917014 +0100 +@@ -400,8 +400,8 @@ static void printstats(const char *direc + { + double delta; + +- delta = (tstop.tv_sec + (tstop.tv_usec / 100000.0)) - +- (tstart.tv_sec + (tstart.tv_usec / 100000.0)); ++ delta = (tstop.tv_sec + (tstop.tv_usec / 1000000.0)) - ++ (tstart.tv_sec + (tstart.tv_usec / 1000000.0)); + if (verbose) { + printf("%s %lu bytes in %.1f seconds", direction, amount, delta); + printf(" [%.0f bit/s]", (amount * 8.) / delta); diff --git a/0008-tftp-hpa-5.2-pktinfo.patch b/0008-tftp-hpa-5.2-pktinfo.patch new file mode 100644 index 0000000..d1fa75c --- /dev/null +++ b/0008-tftp-hpa-5.2-pktinfo.patch @@ -0,0 +1,23 @@ +diff -up tftp-hpa-5.2/tftpd/recvfrom.c.test tftp-hpa-5.2/tftpd/recvfrom.c +--- tftp-hpa-5.2/tftpd/recvfrom.c.test 2011-12-11 23:13:52.000000000 +0100 ++++ tftp-hpa-5.2/tftpd/recvfrom.c 2012-01-04 10:05:17.852042256 +0100 +@@ -149,16 +149,16 @@ myrecvfrom(int s, void *buf, int len, un + + /* Try to enable getting the return address */ + #ifdef IP_RECVDSTADDR +- if (from->sa_family == AF_INET) ++ if (from->sa_family == AF_INET || !from->sa_family) + setsockopt(s, IPPROTO_IP, IP_RECVDSTADDR, &on, sizeof(on)); + #endif + #ifdef IP_PKTINFO +- if (from->sa_family == AF_INET) ++ if (from->sa_family == AF_INET || !from->sa_family) + setsockopt(s, IPPROTO_IP, IP_PKTINFO, &on, sizeof(on)); + #endif + #ifdef HAVE_IPV6 + #ifdef IPV6_RECVPKTINFO +- if (from->sa_family == AF_INET6) ++ if (from->sa_family == AF_INET6 || !from->sa_family) + setsockopt(s, IPPROTO_IPV6, IPV6_RECVPKTINFO, &on, sizeof(on)); + #endif + #endif diff --git a/0009-tftp-doc.patch b/0009-tftp-doc.patch new file mode 100644 index 0000000..f1cb511 --- /dev/null +++ b/0009-tftp-doc.patch @@ -0,0 +1,45 @@ +--- tftp-hpa-5.2/tftp/main.c 2013-04-19 09:34:09.737410319 +0200 ++++ tftp-hpa-5.2/tftp/main.c 2013-04-19 09:42:53.559946374 +0200 +@@ -195,9 +195,11 @@ + { + fprintf(stderr, + #ifdef HAVE_IPV6 +- "Usage: %s [-4][-6][-v][-l][-m mode] [host [port]] [-c command]\n", ++ "Usage: %s [-4][-6][-v][-V][-l][-m mode] [-R port:port] " ++ "[host [port]] [-c command]\n", + #else +- "Usage: %s [-v][-l][-m mode] [host [port]] [-c command]\n", ++ "Usage: %s [-v][-V][-l][-m mode] [-R port:port] " ++ "[host [port]] [-c command]\n", + #endif + program); + exit(errcode); +--- tftp-hpa-5.2/tftpd/tftpd.8.in 2012-11-20 09:43:46.000000000 +0100 ++++ tftp-hpa-5.2/tftpd/tftpd.8.in 2013-04-19 09:44:37.399057279 +0200 +@@ -155,7 +155,7 @@ + .B utimeout + option is negotiated. The default is 1000000 (1 second.) + .TP +-\fB\-\-mapfile\fP \fIremap-file\fP, \fB\-m\fP \fIremap-file\fP ++\fB\-\-map\-file\fP \fIremap-file\fP, \fB\-m\fP \fIremap-file\fP + Specify the use of filename remapping. The + .I remap-file + is a file containing the remapping rules. See the section on filename +@@ -243,7 +243,7 @@ option, but crash with an error if they + accepted by the server. + .SH "FILENAME REMAPPING" + The +-.B \-\-mapfile ++.B \-\-map\-file + option specifies a file which contains filename remapping rules. Each + non-comment line (comments begin with hash marks, + .BR # ) +@@ -395,7 +395,7 @@ flag is used to set up a chroot() enviro + once a connection has been set up. + .PP + Finally, the filename remapping +-.RB ( \-\-mapfile ++.RB ( \-\-map\-file + flag) support can be used to provide a limited amount of additional + access control. + .SH "CONFORMING TO" diff --git a/0010-tftp-enhanced-logging.patch b/0010-tftp-enhanced-logging.patch new file mode 100644 index 0000000..dce9ef9 --- /dev/null +++ b/0010-tftp-enhanced-logging.patch @@ -0,0 +1,84 @@ +--- a/tftpd/tftpd.c 2016-03-02 11:32:30.710775130 +0100 ++++ b/tftpd/tftpd.c 2016-03-02 11:36:24.086541019 +0100 +@@ -1056,14 +1056,14 @@ int main(int argc, char **argv) + + static char *rewrite_access(char *, int, const char **); + static int validate_access(char *, int, const struct formats *, const char **); +-static void tftp_sendfile(const struct formats *, struct tftphdr *, int); ++static void tftp_sendfile(const struct formats *, struct tftphdr *, int, char *); + static void tftp_recvfile(const struct formats *, struct tftphdr *, int); + + struct formats { + const char *f_mode; + char *(*f_rewrite) (char *, int, const char **); + int (*f_validate) (char *, int, const struct formats *, const char **); +- void (*f_send) (const struct formats *, struct tftphdr *, int); ++ void (*f_send) (const struct formats *, struct tftphdr *, int, char *); + void (*f_recv) (const struct formats *, struct tftphdr *, int); + int f_convert; + }; +@@ -1129,6 +1129,9 @@ int tftp(struct tftphdr *tp, int size) + nak(EACCESS, errmsgptr); /* File denied by mapping rule */ + exit(0); + } ++ ecode = ++ (*pf->f_validate) (filename, tp_opcode, pf, &errmsgptr); ++ + if (verbosity >= 1) { + tmp_p = (char *)inet_ntop(from.sa.sa_family, SOCKADDR_P(&from), + tmpbuf, INET6_ADDRSTRLEN); +@@ -1147,9 +1150,14 @@ int tftp(struct tftphdr *tp, int size) + tp_opcode == WRQ ? "WRQ" : "RRQ", + tmp_p, origfilename, + filename); ++ ++ if (ecode == 1) { ++ syslog(LOG_NOTICE, "Client %s File not found %s\n", ++ tmp_p,filename); ++ } ++ + } +- ecode = +- (*pf->f_validate) (filename, tp_opcode, pf, &errmsgptr); ++ + if (ecode) { + nak(ecode, errmsgptr); + exit(0); +@@ -1172,12 +1180,12 @@ int tftp(struct tftphdr *tp, int size) + if (tp_opcode == WRQ) + (*pf->f_recv) (pf, (struct tftphdr *)ackbuf, ap - ackbuf); + else +- (*pf->f_send) (pf, (struct tftphdr *)ackbuf, ap - ackbuf); ++ (*pf->f_send) (pf, (struct tftphdr *)ackbuf, ap - ackbuf, origfilename); + } else { + if (tp_opcode == WRQ) + (*pf->f_recv) (pf, NULL, 0); + else +- (*pf->f_send) (pf, NULL, 0); ++ (*pf->f_send) (pf, NULL, 0, origfilename); + } + exit(0); /* Request completed */ + } +@@ -1557,7 +1565,7 @@ static int validate_access(char *filenam + /* + * Send the requested file. + */ +-static void tftp_sendfile(const struct formats *pf, struct tftphdr *oap, int oacklen) ++static void tftp_sendfile(const struct formats *pf, struct tftphdr *oap, int oacklen, char *filename) + { + struct tftphdr *dp; + struct tftphdr *ap; /* ack packet */ +@@ -1648,6 +1656,13 @@ static void tftp_sendfile(const struct f + if (!++block) + block = rollover_val; + } while (size == segsize); ++ tmp_p = (char *)inet_ntop(from.sa.sa_family, SOCKADDR_P(&from), ++ tmpbuf, INET6_ADDRSTRLEN); ++ if (!tmp_p) { ++ tmp_p = tmpbuf; ++ strcpy(tmpbuf, "???"); ++ } ++ syslog(LOG_NOTICE, "Client %s finished %s",tmp_p,filename); + abort: + (void)fclose(file); + } diff --git a/0011-tftp-hpa-5.2-gcc10.patch b/0011-tftp-hpa-5.2-gcc10.patch new file mode 100644 index 0000000..0ff4a41 --- /dev/null +++ b/0011-tftp-hpa-5.2-gcc10.patch @@ -0,0 +1,12 @@ +diff -up tftp-hpa-5.2/tftp/tftp.c.gcc10 tftp-hpa-5.2/tftp/tftp.c +--- tftp-hpa-5.2/tftp/tftp.c.gcc10 2020-05-04 00:56:28.787896509 +0200 ++++ tftp-hpa-5.2/tftp/tftp.c 2020-05-04 00:58:42.502901005 +0200 +@@ -48,7 +48,7 @@ extern int maxtimeout; + #define PKTSIZE SEGSIZE+4 + char ackbuf[PKTSIZE]; + int timeout; +-sigjmp_buf toplevel; ++extern sigjmp_buf toplevel; + sigjmp_buf timeoutbuf; + + static void nak(int, const char *); diff --git a/0012-tftp-off-by-one.patch b/0012-tftp-off-by-one.patch new file mode 100644 index 0000000..98b0874 --- /dev/null +++ b/0012-tftp-off-by-one.patch @@ -0,0 +1,44 @@ +Resolves: #1485943 + +--- a/tftpd/tftpd.c 2017-08-28 09:12:11.681299000 +0200 ++++ b/tftpd/tftpd.c 2017-08-28 13:30:03.109312000 +0200 +@@ -1388,24 +1388,25 @@ + return strlen(p); + + case 'x': +- if (output) { +- if (from.sa.sa_family == AF_INET) { ++ if (from.sa.sa_family == AF_INET) { ++ if (output) { + sprintf(output, "%08lX", + (unsigned long)ntohl(from.si.sin_addr.s_addr)); +- l = 8; ++ } ++ l = 8; + #ifdef HAVE_IPV6 +- } else { +- unsigned char *c = (unsigned char *)SOCKADDR_P(&from); +- p = tb; +- for (l = 0; l < 16; l++) { +- sprintf(p, "%02X", *c); +- c++; +- p += 2; +- } ++ } else { ++ unsigned char *c = (unsigned char *)SOCKADDR_P(&from); ++ p = tb; ++ for (l = 0; l < 16; l++) { ++ sprintf(p, "%02X", *c); ++ c++; ++ p += 2; ++ } ++ if (output) + strcpy(output, tb); +- l = strlen(tb); ++ l = strlen(tb); + #endif +- } + } + return l; + + diff --git a/0013-tftp-c99.patch b/0013-tftp-c99.patch new file mode 100644 index 0000000..40bb4dd --- /dev/null +++ b/0013-tftp-c99.patch @@ -0,0 +1,50 @@ +The glibc headers do not declare bsd_signal by default. Call signal +instead, which is the same function as bsd_signal in current glibc. + +This fixes implicit function declarations and avoids build issues with +future compilers. + +diff --git a/tftp/main.c b/tftp/main.c +index fcf5a25ac654954b..7e399d414ca0dd2b 100644 +--- a/tftp/main.c ++++ b/tftp/main.c +@@ -310,7 +310,7 @@ int main(int argc, char *argv[]) + sp->s_proto = (char *)"udp"; + } + +- bsd_signal(SIGINT, intr); ++ signal(SIGINT, intr); + + if (peerargc) { + /* Set peer */ +@@ -791,7 +791,7 @@ void intr(int sig) + { + (void)sig; /* Quiet unused warning */ + +- bsd_signal(SIGALRM, SIG_IGN); ++ signal(SIGALRM, SIG_IGN); + alarm(0); + siglongjmp(toplevel, -1); + } +diff --git a/tftp/tftp.c b/tftp/tftp.c +index 109848c4f9a5ad4e..d31553be5b76e305 100644 +--- a/tftp/tftp.c ++++ b/tftp/tftp.c +@@ -85,7 +85,7 @@ void tftp_sendfile(int fd, const char *name, const char *mode) + is_request = 1; /* First packet is the actual WRQ */ + amount = 0; + +- bsd_signal(SIGALRM, timer); ++ signal(SIGALRM, timer); + do { + if (is_request) { + size = makerequest(WRQ, name, dp, mode) - 4; +@@ -191,7 +191,7 @@ void tftp_recvfile(int fd, const char *name, const char *mode) + firsttrip = 1; + amount = 0; + +- bsd_signal(SIGALRM, timer); ++ signal(SIGALRM, timer); + do { + if (firsttrip) { + size = makerequest(RRQ, name, ap, mode); diff --git a/0014-Make-configure-an-order-only-prerequisite-of-aconfig.h.in.patch b/0014-Make-configure-an-order-only-prerequisite-of-aconfig.h.in.patch new file mode 100644 index 0000000..5a1496b --- /dev/null +++ b/0014-Make-configure-an-order-only-prerequisite-of-aconfig.h.in.patch @@ -0,0 +1,76 @@ +From ff819b108a14f40612ebfb15937ae4a1b632bab9 Mon Sep 17 00:00:00 2001 +From: Ron Lee +Date: Thu, 31 Jul 2014 16:29:43 +0930 +Subject: [PATCH] Make configure an order-only prerequisite of aconfig.h.in +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On filesystems with subsecond resolution, like ext4, we can't trust the +timestamp of aconfig.h.in since autoheader leaves it truncated to second +resolution (apparently touch -r and cp -p can do this at the very least) +while configure has full subsecond resolution, so it can look newer even +when it was cleanly created first, leading to the build system looping +trying to recreate all of that again ... + +So in the initial stage of a clean build we can get something like this: + +$ make spotless +$ make autoconf +rm -rf MCONFIG configure config.log aconfig.h *.cache +autoconf +rm -f aconfig.h.in aconfig.h +autoheader + +$ stat configure aconfig.h.in + File: ‘configure’ +Device: 807h/2055d Inode: 9443466 Links: 1 +Access: 2014-07-31 03:27:27.599293442 +0930 +Modify: 2014-07-31 03:27:27.711290270 +0930 +Change: 2014-07-31 03:27:27.711290270 +0930 + + File: ‘aconfig.h.in’ +Device: 807h/2055d Inode: 9443467 Links: 1 +Access: 2014-07-31 03:27:27.000000000 +0930 +Modify: 2014-07-31 03:27:27.000000000 +0930 +Change: 2014-07-31 03:27:27.903284841 +0930 + +And with a parallel build, that can then leave 'make all' racing to +remove and recreate aconfig.h (and possibly more things), while it +begins to build the first targets. Which then fail horribly like +we see here: + +https://buildd.debian.org/status/fetch.php?pkg=tftp-hpa&arch=i386&ver=5.2%2B20140608-1&stamp=1406736363 + +Possibly we also need to move the actual build job into the rule for +the 'all' target, so that the build system update prerequisites are +guaranteed to be completed before it runs (as opposed to running in +parallel with them), but this change might be enough for now. + +Signed-off-by: Ron Lee +Signed-off-by: H. Peter Anvin +--- + Makefile | 8 ++++++-- + 1 file changed, 6 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index 9ff12d8..75a2042 100644 +--- a/Makefile ++++ b/Makefile +@@ -58,8 +58,12 @@ aconfig.h: MCONFIG + + # Adding "configure" to the dependencies serializes this with running + # autoconf, because there are apparently race conditions between +-# autoconf and autoheader. +-aconfig.h.in: configure.in configure aclocal.m4 ++# autoconf and autoheader. And worse than that, even when autoconf ++# cleanly returns first, autoheader will truncate the timestamp of ++# aconfig.h.in to second resolution, so on a filesystem with subsecond ++# resolution it can appear older than configure (which isn't truncated). ++# So make it an order-only prerequisite to avoid looping regenerating it. ++aconfig.h.in: configure.in aclocal.m4 | configure + rm -f aconfig.h.in aconfig.h + autoheader + +-- +2.24.1 \ No newline at end of file diff --git a/tftp-hpa-5.2.tar.bz2 b/tftp-hpa-5.2.tar.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7572754dbf90ef4b7960cc22f88933c1d62f3603 GIT binary patch literal 93992 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 LML1B95AH;Sk<6S6 literal 0 HcmV?d00001 diff --git a/tftp.service b/tftp.service new file mode 100644 index 0000000..c26ad3b --- /dev/null +++ b/tftp.service @@ -0,0 +1,11 @@ +[Unit] +Description=Tftp Server +Requires=tftp.socket +Documentation=man:in.tftpd + +[Service] +ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot +StandardInput=socket + +[Install] +Also=tftp.socket diff --git a/tftp.socket b/tftp.socket new file mode 100644 index 0000000..8764c1d --- /dev/null +++ b/tftp.socket @@ -0,0 +1,8 @@ +[Unit] +Description=Tftp Server Activation Socket + +[Socket] +ListenDatagram=69 + +[Install] +WantedBy=sockets.target diff --git a/tftp.spec b/tftp.spec new file mode 100644 index 0000000..8d19399 --- /dev/null +++ b/tftp.spec @@ -0,0 +1,112 @@ +%define anolis_release 1 +%global _hardened_build 1 + +Name: tftp +Version: 5.2 +Release: %{anolis_release}%{?dist} +License: BSD +URL: http://www.kernel.org/pub/software/network/tftp/ +Source0: http://www.kernel.org/pub/software/network/tftp/tftp-hpa/tftp-hpa-%{version}.tar.bz2 +Source1: tftp.socket +Source2: tftp.service +Summary: The client for the Trivial File Transfer Protocol (TFTP) + +Patch0: 0001-tftp-0.40-remap.patch +Patch2: 0002-tftp-hpa-0.39-tzfix.patch +Patch3: 0003-tftp-0.42-tftpboot.patch +Patch4: 0004-tftp-0.49-chk_retcodes.patch +Patch5: 0005-tftp-hpa-0.49-fortify-strcpy-crash.patch +Patch6: 0006-tftp-0.49-cmd_arg.patch +Patch7: 0007-tftp-hpa-0.49-stats.patch +Patch8: 0008-tftp-hpa-5.2-pktinfo.patch +Patch9: 0009-tftp-doc.patch +Patch10: 0010-tftp-enhanced-logging.patch +Patch11: 0011-tftp-hpa-5.2-gcc10.patch +Patch12: 0012-tftp-off-by-one.patch +Patch13: 0013-tftp-c99.patch +Patch14: 0014-Make-configure-an-order-only-prerequisite-of-aconfig.h.in.patch + +BuildRequires: autoconf +BuildRequires: gcc +BuildRequires: make +BuildRequires: readline-devel +BuildRequires: systemd-rpm-macros + +%description +The Trivial File Transfer Protocol (TFTP) is normally used only for +booting diskless workstations. The tftp package provides the user +interface for TFTP, which allows users to transfer files to and from a +remote machine. This program and TFTP provide very little security, +and should not be enabled unless it is expressly needed. + +%package server +Summary: The server for the Trivial File Transfer Protocol (TFTP) +Requires: systemd-units +Requires(post): systemd-units +Requires(postun): systemd-units + +%description server +The Trivial File Transfer Protocol (TFTP) is normally used only for +booting diskless workstations. The tftp-server package provides the +server for TFTP, which allows users to transfer files to and from a +remote machine. TFTP provides very little security, and should not be +enabled unless it is expressly needed. The TFTP server is run by using +systemd socket activation, and is disabled by default. + +%package doc +Summary: Documents for %{name} +BuildArch: noarch +Requires: %{name} = %{EVR} + +%description doc +Doc pages for %{name}. + +%prep +%autosetup -n %{name}-hpa-%{version} -p1 + +%build +autoreconf +%configure +%make_build + +%install +mkdir -p ${RPM_BUILD_ROOT}%{_bindir} +mkdir -p ${RPM_BUILD_ROOT}%{_mandir}/man{1,8} +mkdir -p ${RPM_BUILD_ROOT}%{_sbindir} +mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/lib/tftpboot +mkdir -p ${RPM_BUILD_ROOT}%{_unitdir} + +make INSTALLROOT=${RPM_BUILD_ROOT} SBINDIR=%{_sbindir} MANDIR=%{_mandir} INSTALL='install -p' install + +install -p -m 644 %SOURCE1 ${RPM_BUILD_ROOT}%{_unitdir} +install -p -m 644 %SOURCE2 ${RPM_BUILD_ROOT}%{_unitdir} + +%generate_compatibility_deps + +%post server +%systemd_post tftp.socket + +%preun server +%systemd_preun tftp.socket + +%postun server +%systemd_postun_with_restart tftp.socket + +%files +%{_bindir}/tftp +%dir %{abidir} +%{abidir}/tftp-option.list +%{_mandir}/man1/* + +%files server +%dir %{_localstatedir}/lib/tftpboot +%{_sbindir}/in.tftpd +%{_mandir}/man8/* +%{_unitdir}/* + +%files doc +%doc README README.security CHANGES + +%changelog +* Wed Mar 15 2023 yuanhui - 5.2-1 +- Init tftp for AnolisOS 23 -- Gitee