summaryrefslogtreecommitdiff
path: root/ftp/yale-tftpd/files/patch-ab
diff options
context:
space:
mode:
Diffstat (limited to 'ftp/yale-tftpd/files/patch-ab')
-rw-r--r--ftp/yale-tftpd/files/patch-ab140
1 files changed, 0 insertions, 140 deletions
diff --git a/ftp/yale-tftpd/files/patch-ab b/ftp/yale-tftpd/files/patch-ab
deleted file mode 100644
index 64c8929df39b..000000000000
--- a/ftp/yale-tftpd/files/patch-ab
+++ /dev/null
@@ -1,140 +0,0 @@
---- tftpd.c.orig Mon Mar 20 14:14:39 1995
-+++ tftpd.c Fri Aug 27 12:46:59 1999
-@@ -294,7 +294,10 @@
- }
-
- int validate_access();
--int sendfile(), recvfile();
-+
-+struct formats;
-+int tftpsendfile(struct formats *);
-+int tftprecvfile(struct formats *);
-
- struct formats {
- char *f_mode;
-@@ -303,8 +306,8 @@
- int (*f_recv)();
- int f_convert;
- } formats[] = {
-- { "netascii", validate_access, sendfile, recvfile, 1 },
-- { "octet", validate_access, sendfile, recvfile, 0 },
-+ { "netascii", validate_access, tftpsendfile, tftprecvfile, 1 },
-+ { "octet", validate_access, tftpsendfile, tftprecvfile, 0 },
- #ifdef notdef
- { "mail", validate_user, sendmail, recvmail, 1 },
- #endif
-@@ -459,17 +462,25 @@
-
- /* Rule 2:
- */
-- if (tftpRootDirectory != 0 && IS_ROOTED(filename)) {
-+ if ((tftpRootDirectory != 0 && IS_ROOTED(filename)) ||
-+ (tftpDefaultDirectory != 0 && IS_ROOTED(filename))) {
- char _tmp[1024];
-+ char* realRootDir;
- int maxPath;
- int rootLen;
-
-- rootLen = strlen (tftpRootDirectory);
-+ if (tftpRootDirectory != 0 ) {
-+ realRootDir = tftpRootDirectory;
-+ }
-+ else {
-+ realRootDir = tftpDefaultDirectory;
-+ }
-+
-+ rootLen = strlen (realRootDir);
-
- /* make sure the pathname doesn't already contain
- * the virtual root.
- */
-- if (strncmp(filename,tftpRootDirectory,rootLen) != 0) {
-
- /* Insure our temporary space is big enough */
- maxPath = ((sizeof _tmp) - 1) - rootLen;
-@@ -481,6 +492,8 @@
- return EACCESS;
- }
-
-+ if (strncmp(filename,realRootDir,rootLen) != 0) {
-+
- /* Squeeze out any '.' or '..' components */
- strcpy (tmpPath, filename);
- if (realPath (tmpPath, _tmp) < 0) {
-@@ -492,21 +505,54 @@
- /* Create the full pathname, prefixed by the
- * virtual root.
- */
-- strcpy (tmpPath, tftpRootDirectory);
-+ strcpy (tmpPath, realRootDir);
- strcat (tmpPath, _tmp);
- filename = tmpPath;
- }
-+ else {
-+ /* Squeeze out any '.' or '..' components */
-+ strcpy (tmpPath, filename);
-+ if (realPath (tmpPath, _tmp) < 0) {
-+ if (tftpDebugLevel > 1)
-+ syslog (LOG_DEBUG, "realPath fails");
-+ return EACCESS;
-+ }
-+ /* Create the full pathname */
-+ strcpy (tmpPath,_tmp);
-+ filename = tmpPath;
-+ if (strncmp(filename,realRootDir,rootLen) != 0) {
-+ if (tftpDebugLevel > 1) {
-+ syslog(LOG_DEBUG, "file=%s; invalid access denied", filename);
-+ return EACCESS;
-+ }
-+ }
-+ }
- }
-
- /* Rule 3:
- */
-- if (!IS_ROOTED(filename) && tftpDefaultDirectory == 0) {
-- strcpy (tmpPath, tftpRootDirectory);
-- strcat (tmpPath, "/");
-+ if ((!IS_ROOTED(filename) && tftpRootDirectory != 0) ||
-+ (!IS_ROOTED(filename) && tftpDefaultDirectory != 0)) {
-+ char _tmp[1024];
- strcat (tmpPath, filename);
-+ /* Squeeze out any '.' or '..' components */
-+ strcpy (tmpPath, filename);
-+ if (realPath (tmpPath, _tmp) < 0) {
-+ if (tftpDebugLevel > 1)
-+ syslog (LOG_DEBUG, "realPath fails");
-+ return EACCESS;
-+ }
-+ if ( tftpDefaultDirectory == 0 ) {
-+ strcpy (tmpPath, tftpRootDirectory);
-+ }
-+ else {
-+ strcpy (tmpPath, tftpDefaultDirectory);
-+ }
-+ strcat (tmpPath, _tmp);
- filename = tmpPath;
- }
-
-+
- /* Check access lists */
- /* Rules 4&5:
- */
-@@ -593,7 +639,7 @@
- /*
- * Send the requested file.
- */
--sendfile(pf)
-+tftpsendfile(pf)
- struct formats *pf;
- {
- struct tftphdr *dp, *r_init();
-@@ -664,7 +710,7 @@
- /*
- * Receive a file.
- */
--recvfile(pf)
-+tftprecvfile(pf)
- struct formats *pf;
- {
- struct tftphdr *dp, *w_init();