diff options
author | 2006-10-11 01:37:46 +0000 | |
---|---|---|
committer | 2006-10-11 01:37:46 +0000 | |
commit | b4a3652d89874b11e5c5ef6348884b9af500b54f (patch) | |
tree | c4c24e7fd171291518c5713aa9133869a0c81857 /net-ftp/ftpd/files | |
parent | Returning it from the attic until vultureng can be updated. thanks Mr.Bones. (diff) | |
download | historical-b4a3652d89874b11e5c5ef6348884b9af500b54f.tar.gz historical-b4a3652d89874b11e5c5ef6348884b9af500b54f.tar.bz2 historical-b4a3652d89874b11e5c5ef6348884b9af500b54f.zip |
Security bump for bug #384454.
Package-Manager: portage-2.1.2_pre1
Diffstat (limited to 'net-ftp/ftpd/files')
-rw-r--r-- | net-ftp/ftpd/files/digest-ftpd-0.17-r4 | 6 | ||||
-rw-r--r-- | net-ftp/ftpd/files/ftpd-0.17-setguid.patch | 66 |
2 files changed, 72 insertions, 0 deletions
diff --git a/net-ftp/ftpd/files/digest-ftpd-0.17-r4 b/net-ftp/ftpd/files/digest-ftpd-0.17-r4 new file mode 100644 index 000000000000..9c0de1ba222e --- /dev/null +++ b/net-ftp/ftpd/files/digest-ftpd-0.17-r4 @@ -0,0 +1,6 @@ +MD5 0b9185d5144904798b721354ea9ff156 linux-ftpd-0.17-ssl.patch 36459 +RMD160 5a0d7301f69b4c1714f36419f98134f9aa0ce874 linux-ftpd-0.17-ssl.patch 36459 +SHA256 0082ee6a71fdd83f61e63166f7bbba97c204cdc67f9e1bf10f2df31590fba780 linux-ftpd-0.17-ssl.patch 36459 +MD5 f5f491564812db5d8783daa538c49186 linux-ftpd-0.17.tar.gz 46763 +RMD160 869e410d8f063c764c04f1d3b41b625a9d679d22 linux-ftpd-0.17.tar.gz 46763 +SHA256 65a0b249e38bf3c3a16dbd4d3edd2657683ca8f47b307e92007f378b21d2fa65 linux-ftpd-0.17.tar.gz 46763 diff --git a/net-ftp/ftpd/files/ftpd-0.17-setguid.patch b/net-ftp/ftpd/files/ftpd-0.17-setguid.patch new file mode 100644 index 000000000000..f25b2b3e4aa3 --- /dev/null +++ b/net-ftp/ftpd/files/ftpd-0.17-setguid.patch @@ -0,0 +1,66 @@ +--- linux-ftpd-0.17/ftpd/popen.c.bak 1999-07-16 11:12:54.000000000 +1000 ++++ linux-ftpd-0.17/ftpd/popen.c 2006-08-25 13:31:33.950447078 +1000 +@@ -169,8 +169,13 @@ + * XXX: this doesn't seem right... and shouldn't + * we initgroups, or at least setgroups(0,0)? + */ +- setgid(getegid()); +- setuid(i); ++ ++/* ++ * PSz 25 Aug 06 Must check the return status of these setgid/setuid calls, ++ * see http://www.bress.net/blog/archives/34-setuid-madness.html ++ */ ++ if ( setgid(geteuid()) != 0 ) _exit(1); ++ if ( setuid(i) != 0 ) _exit(1); + + #ifndef __linux__ + /* +--- linux-ftpd-0.17/ftpd/ftpd.c.bak 2006-08-25 12:53:25.277537000 +1000 ++++ linux-ftpd-0.17/ftpd/ftpd.c 2006-08-25 13:46:28.798975583 +1000 +@@ -1159,6 +1159,13 @@ + } + strcpy(pw->pw_dir, "/"); + setenv("HOME", "/", 1); ++ } ++ /* PSz 25 Aug 06 chdir for real users done after setting UID */ ++ if (seteuid((uid_t)pw->pw_uid) < 0) { ++ reply(550, "Can't set uid."); ++ goto bad; ++ } ++ if (guest || dochroot) { /* do nothing, handled above */ + } else if (chdir(pw->pw_dir) < 0) { + if (chdir("/") < 0) { + reply(530, "User %s: can't change directory to %s.", +@@ -1167,10 +1174,7 @@ + } else + lreply(230, "No directory! Logging in with home=/"); + } +- if (seteuid((uid_t)pw->pw_uid) < 0) { +- reply(550, "Can't set uid."); +- goto bad; +- } ++ + sigfillset(&allsigs); + sigprocmask(SIG_UNBLOCK,&allsigs,NULL); + +@@ -1408,7 +1412,8 @@ + goto bad; + sleep(tries); + } +- (void) seteuid((uid_t)pw->pw_uid); ++/* PSz 25 Aug 06 Check return status */ ++ if (seteuid((uid_t)pw->pw_uid) != 0) _exit(1); + sigfillset(&allsigs); + sigprocmask (SIG_UNBLOCK, &allsigs, NULL); + +@@ -1440,7 +1445,8 @@ + bad: + /* Return the real value of errno (close may change it) */ + t = errno; +- (void) seteuid((uid_t)pw->pw_uid); ++/* PSz 25 Aug 06 Check return status */ ++ if (seteuid((uid_t)pw->pw_uid) != 0) _exit(1); + sigfillset (&allsigs); + sigprocmask (SIG_UNBLOCK, &allsigs, NULL); + (void) close(s); |