Package init
This commit is contained in:
commit
89ffb71779
19
tftp-0.40-remap.patch
Normal file
19
tftp-0.40-remap.patch
Normal file
@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
54
tftp-0.42-tftpboot.patch
Normal file
54
tftp-0.42-tftpboot.patch
Normal file
@ -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
|
||||||
15
tftp-0.49-chk_retcodes.patch
Normal file
15
tftp-0.49-chk_retcodes.patch
Normal file
@ -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
|
||||||
159
tftp-0.49-cmd_arg.patch
Normal file
159
tftp-0.49-cmd_arg.patch
Normal file
@ -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')
|
||||||
27
tftp-doc.patch
Normal file
27
tftp-doc.patch
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
--- 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
|
||||||
84
tftp-enhanced-logging.patch
Normal file
84
tftp-enhanced-logging.patch
Normal file
@ -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);
|
||||||
|
}
|
||||||
18
tftp-hpa-0.39-tzfix.patch
Normal file
18
tftp-hpa-0.39-tzfix.patch
Normal file
@ -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], '/');
|
||||||
26
tftp-hpa-0.49-fortify-strcpy-crash.patch
Normal file
26
tftp-hpa-0.49-fortify-strcpy-crash.patch
Normal file
@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
14
tftp-hpa-0.49-stats.patch
Normal file
14
tftp-hpa-0.49-stats.patch
Normal file
@ -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);
|
||||||
23
tftp-hpa-5.2-pktinfo.patch
Normal file
23
tftp-hpa-5.2-pktinfo.patch
Normal file
@ -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
|
||||||
BIN
tftp-hpa-5.2.tar.bz2
Normal file
BIN
tftp-hpa-5.2.tar.bz2
Normal file
Binary file not shown.
11
tftp.service
Normal file
11
tftp.service
Normal file
@ -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
|
||||||
8
tftp.socket
Normal file
8
tftp.socket
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Tftp Server Activation Socket
|
||||||
|
|
||||||
|
[Socket]
|
||||||
|
ListenDatagram=69
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=sockets.target
|
||||||
90
tftp.spec
Normal file
90
tftp.spec
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
Name: tftp
|
||||||
|
Version: 5.2
|
||||||
|
Release: 26
|
||||||
|
Summary: The client for the Trivial File Transfer Protocol (TFTP)
|
||||||
|
License: BSD
|
||||||
|
Group: Applications/Internet
|
||||||
|
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
|
||||||
|
#Acknowledge all patches from fedora or redhat.
|
||||||
|
Patch0000: tftp-0.40-remap.patch
|
||||||
|
Patch0002: tftp-hpa-0.39-tzfix.patch
|
||||||
|
Patch0003: tftp-0.42-tftpboot.patch
|
||||||
|
Patch0004: tftp-0.49-chk_retcodes.patch
|
||||||
|
Patch0005: tftp-hpa-0.49-fortify-strcpy-crash.patch
|
||||||
|
Patch0006: tftp-0.49-cmd_arg.patch
|
||||||
|
Patch0007: tftp-hpa-0.49-stats.patch
|
||||||
|
Patch0008: tftp-hpa-5.2-pktinfo.patch
|
||||||
|
Patch0009: tftp-doc.patch
|
||||||
|
Patch0010: tftp-enhanced-logging.patch
|
||||||
|
|
||||||
|
BuildRequires: readline-devel autoconf systemd-units
|
||||||
|
|
||||||
|
%description
|
||||||
|
TFTP which is the abbreviation of Trivial File Fransfer Protocol
|
||||||
|
enables users to transfer files between local host and remote machine.
|
||||||
|
This package tftp is a client implementing TFTP.
|
||||||
|
|
||||||
|
%package server
|
||||||
|
Summary: The server for the Trivial File Transfer Protocol (TFTP)
|
||||||
|
Requires: systemd-units
|
||||||
|
|
||||||
|
%description server
|
||||||
|
The TFTP server is run by using systemd socket activation, and is disabled by default.
|
||||||
|
|
||||||
|
%package help
|
||||||
|
Summary: Documents for tftp
|
||||||
|
%description help
|
||||||
|
Man pages and other related documents.
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -n %{name}-hpa-%{version} -p1
|
||||||
|
%build
|
||||||
|
autoreconf
|
||||||
|
%configure
|
||||||
|
%make_build
|
||||||
|
|
||||||
|
%install
|
||||||
|
rm -rf %{buildroot}
|
||||||
|
install -d %{buildroot}%{_bindir} %{buildroot}%{_mandir}/man{1,8} %{buildroot}%{_sbindir}
|
||||||
|
install -d %{buildroot}%{_localstatedir}/lib/tftpboot %{buildroot}%{_unitdir}
|
||||||
|
|
||||||
|
make INSTALLROOT=%{buildroot} SBINDIR=%{_sbindir} MANDIR=%{_mandir} INSTALL='install -p' install
|
||||||
|
install -m755 -d -p %{buildroot}%{_sysconfdir}/xinetd.d/ %{buildroot}%{_localstatedir}/lib/tftpboot
|
||||||
|
sed -e 's:/var:%{_localstatedir}:' -e 's:/usr/sbin:%{_sbindir}:' \
|
||||||
|
tftp-xinetd > %{buildroot}%{_sysconfdir}/xinetd.d/tftp
|
||||||
|
touch -r tftp-xinetd %{buildroot}%{_sysconfdir}/xinetd.d/tftp
|
||||||
|
|
||||||
|
install -p -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}
|
||||||
|
install -p -m 0644 %{SOURCE2} %{buildroot}%{_unitdir}
|
||||||
|
|
||||||
|
%post server
|
||||||
|
%systemd_post tftp.socket
|
||||||
|
|
||||||
|
%preun server
|
||||||
|
%systemd_preun tftp.socket
|
||||||
|
|
||||||
|
%postun server
|
||||||
|
%systemd_postun_with_restart tftp.socket
|
||||||
|
|
||||||
|
|
||||||
|
%files
|
||||||
|
%doc README README.security CHANGES
|
||||||
|
%{_bindir}/tftp
|
||||||
|
|
||||||
|
%files server
|
||||||
|
%config(noreplace) %{_sysconfdir}/xinetd.d/tftp
|
||||||
|
%dir %{_localstatedir}/lib/tftpboot
|
||||||
|
%{_sbindir}/in.tftpd
|
||||||
|
%{_unitdir}/*
|
||||||
|
|
||||||
|
%files help
|
||||||
|
%{_mandir}/man1/*
|
||||||
|
%{_mandir}/man8/*
|
||||||
|
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Tue Sep 17 2019 Zaiwang Li<lizaiwang1@huawei.com> - 5.2-26
|
||||||
|
- Init package
|
||||||
Loading…
x
Reference in New Issue
Block a user