summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'www-apache/mod_suphp/files/suphp-mod_userdir.patch')
-rw-r--r--www-apache/mod_suphp/files/suphp-mod_userdir.patch224
1 files changed, 0 insertions, 224 deletions
diff --git a/www-apache/mod_suphp/files/suphp-mod_userdir.patch b/www-apache/mod_suphp/files/suphp-mod_userdir.patch
deleted file mode 100644
index b4f6f19e7e30..000000000000
--- a/www-apache/mod_suphp/files/suphp-mod_userdir.patch
+++ /dev/null
@@ -1,224 +0,0 @@
-diff -ur suphp-0.6.1/doc/CONFIG suphp-0.6.1-userdir/doc/CONFIG
---- suphp-0.6.1/doc/CONFIG 2005-11-26 14:45:49.000000000 -0500
-+++ suphp-0.6.1-userdir/doc/CONFIG 2005-12-02 15:07:41.000000000 -0500
-@@ -95,6 +95,11 @@
- Minimum GID allowed to execute scripts.
- Defaults to compile-time value.
-
-+handle_userdir:
-+ Handle sites created by mod_userdir.
-+ Scripts on userdir sites will be executed with the permissions
-+ of the owner of the site. This option only affects force and paranoid mode.
-+ This option is enabled by default.
-
- 3. Handlers
-
-diff -ur suphp-0.6.1/doc/suphp.conf-example suphp-0.6.1-userdir/doc/suphp.conf-example
---- suphp-0.6.1/doc/suphp.conf-example 2005-11-26 14:45:49.000000000 -0500
-+++ suphp-0.6.1-userdir/doc/suphp.conf-example 2005-12-02 15:07:41.000000000 -0500
-@@ -38,6 +38,8 @@
- ; Minimum GID
- min_gid=100
-
-+; Use correct permissions for mod_userdir sites
-+handle_userdir=true
-
- [handlers]
- ;Handler for php-scripts
-diff -ur suphp-0.6.1/src/Application.cpp suphp-0.6.1-userdir/src/Application.cpp
---- suphp-0.6.1/src/Application.cpp 2005-11-26 14:45:49.000000000 -0500
-+++ suphp-0.6.1-userdir/src/Application.cpp 2005-12-02 17:18:27.000000000 -0500
-@@ -19,6 +19,7 @@
- */
-
- #include <iostream>
-+#include <sstream>
-
- #include "config.h"
-
-@@ -300,29 +301,33 @@
- // Paranoid and force mode
-
- #if (defined(OPT_USERGROUP_PARANOID) || defined(OPT_USERGROUP_FORCE))
-- std::string targetUsername, targetGroupname;
-- try {
-- targetUsername = environment.getVar("SUPHP_USER");
-- targetGroupname = environment.getVar("SUPHP_GROUP");
-- } catch (KeyNotFoundException& e) {
-- throw SecurityException(
-+ if (config.getHandleUserdir() && checkUserDir(environment.getVar("SUPHP_URI"),targetUser)) {
-+ targetGroup = targetUser.getGroupInfo();
-+ } else {
-+ std::string targetUsername, targetGroupname;
-+ try {
-+ targetUsername = environment.getVar("SUPHP_USER");
-+ targetGroupname = environment.getVar("SUPHP_GROUP");
-+ } catch (KeyNotFoundException& e) {
-+ throw SecurityException(
- "Environment variable SUPHP_USER or SUPHP_GROUP not set",
- __FILE__, __LINE__);
-- }
-+ }
-
-- if (targetUsername[0] == '#' && targetUsername.find_first_not_of(
-+ if (targetUsername[0] == '#' && targetUsername.find_first_not_of(
- "0123456789", 1) == std::string::npos) {
-- targetUser = api.getUserInfo(Util::strToInt(targetUsername.substr(1)));
-- } else {
-- targetUser = api.getUserInfo(targetUsername);
-- }
-+ targetUser = api.getUserInfo(Util::strToInt(targetUsername.substr(1)));
-+ } else {
-+ targetUser = api.getUserInfo(targetUsername);
-+ }
-
-- if (targetGroupname[0] == '#' && targetGroupname.find_first_not_of(
-+ if (targetGroupname[0] == '#' && targetGroupname.find_first_not_of(
- "0123456789", 1) == std::string::npos) {
-- targetGroup = api.getGroupInfo(
-+ targetGroup = api.getGroupInfo(
- Util::strToInt(targetGroupname.substr(1)));
-- } else {
-- targetGroup = api.getGroupInfo(targetGroupname);
-+ } else {
-+ targetGroup = api.getGroupInfo(targetGroupname);
-+ }
- }
- #endif // OPT_USERGROUP_PARANOID || OPT_USERGROUP_FORCE
-
-@@ -473,6 +478,28 @@
- }
- }
-
-+bool suPHP::Application::checkUserDir(const std::string& url, UserInfo& user) const {
-+
-+ if (url.length() <= 2 || url[1] != '~')
-+ return false;
-+
-+ API& api = API_Helper::getSystemAPI();
-+ std::string topDir;
-+ std::istringstream strm(url);
-+
-+ for (int i = 0; i < 2; i++)
-+ if (!std::getline(strm, topDir, '/'))
-+ return false;
-+
-+ std::string userName = topDir.substr(1,topDir.length());
-+
-+ try {
-+ user = api.getUserInfo(userName);
-+ return true;
-+ } catch (LookupException& e) {
-+ return false;
-+ }
-+}
-
- int main(int argc, char **argv) {
- try {
-diff -ur suphp-0.6.1/src/Application.hpp suphp-0.6.1-userdir/src/Application.hpp
---- suphp-0.6.1/src/Application.hpp 2005-11-26 14:45:49.000000000 -0500
-+++ suphp-0.6.1-userdir/src/Application.hpp 2005-12-02 15:07:41.000000000 -0500
-@@ -39,6 +39,7 @@
- #include "SystemException.hpp"
- #include "SoftException.hpp"
- #include "SecurityException.hpp"
-+#include "UserInfo.hpp"
-
- namespace suPHP {
- /**
-@@ -107,6 +108,12 @@
- const Configuration& config) const
- throw (SoftException);
-
-+ /**
-+ * Checks if a given URL is a userdir
-+ * associated user is assigned to the user parameter
-+ */
-+ bool checkUserDir(const std::string& url,
-+ UserInfo& user) const;
-
- public:
- /**
-diff -ur suphp-0.6.1/src/Configuration.cpp suphp-0.6.1-userdir/src/Configuration.cpp
---- suphp-0.6.1/src/Configuration.cpp 2005-11-26 14:45:49.000000000 -0500
-+++ suphp-0.6.1-userdir/src/Configuration.cpp 2005-12-02 17:22:46.000000000 -0500
-@@ -112,6 +112,7 @@
- #endif
- this->umask = 0077;
- this->chroot_path = "";
-+ this->handle_userdir = true;
- }
-
- void suPHP::Configuration::readFromFile(File& file)
-@@ -157,6 +158,8 @@
- this->umask = Util::octalStrToInt(value);
- else if (key == "chroot")
- this->chroot_path = value;
-+ else if (key == "handle_userdir")
-+ this->handle_userdir = this->strToBool(value);
- else
- throw ParsingException("Unknown option \"" + key +
- "\" in section [global]",
-@@ -250,3 +253,7 @@
- std::string suPHP::Configuration::getChrootPath() const {
- return this->chroot_path;
- }
-+
-+bool suPHP::Configuration::getHandleUserdir() const {
-+ return this->handle_userdir;
-+}
-diff -ur suphp-0.6.1/src/Configuration.hpp suphp-0.6.1-userdir/src/Configuration.hpp
---- suphp-0.6.1/src/Configuration.hpp 2005-11-26 14:45:49.000000000 -0500
-+++ suphp-0.6.1-userdir/src/Configuration.hpp 2005-12-02 15:07:41.000000000 -0500
-@@ -57,7 +57,8 @@
- int min_gid;
- int umask;
- std::string chroot_path;
--
-+ bool handle_userdir;
-+
- /**
- * Converts string to bool
- */
-@@ -165,6 +166,12 @@
- * Return chroot path
- */
- std::string getChrootPath() const;
-+
-+ /**
-+ * Return whether to correctly handle mod_userdir sites
-+ */
-+ bool getHandleUserdir() const;
-+
- };
- };
-
-diff -ur suphp-0.6.1/src/apache/mod_suphp.c suphp-0.6.1-userdir/src/apache/mod_suphp.c
---- suphp-0.6.1/src/apache/mod_suphp.c 2005-11-26 14:45:49.000000000 -0500
-+++ suphp-0.6.1-userdir/src/apache/mod_suphp.c 2005-12-02 15:07:41.000000000 -0500
-@@ -444,7 +444,10 @@
- }
- }
- }
--
-+
-+ /* for mod_userdir checking */
-+ apr_table_setn(r->subprocess_env, "SUPHP_URI", apr_pstrdup(p, r->uri));
-+
- if (auth_user && auth_pass) {
- ap_table_setn(r->subprocess_env, "SUPHP_AUTH_USER", auth_user);
- ap_table_setn(r->subprocess_env, "SUPHP_AUTH_PW", auth_pass);
-diff -ur suphp-0.6.1/src/apache2/mod_suphp.c suphp-0.6.1-userdir/src/apache2/mod_suphp.c
---- suphp-0.6.1/src/apache2/mod_suphp.c 2005-11-26 14:45:49.000000000 -0500
-+++ suphp-0.6.1-userdir/src/apache2/mod_suphp.c 2005-12-02 15:07:41.000000000 -0500
-@@ -461,6 +461,10 @@
- }
- }
-
-+ /* for mod_userdir checking */
-+ apr_table_setn(r->subprocess_env, "SUPHP_URI",
-+ apr_pstrdup(r->pool, r->uri));
-+
- if (auth_user && auth_pass)
- {
- apr_table_setn(r->subprocess_env, "SUPHP_AUTH_USER", auth_user);