Download | Plain Text | No Line Numbers


  1. --- support/suexec.c.orig 2009-04-27 02:54:38.000000000 +0200
  2. +++ support/suexec.c 2009-04-27 02:54:43.000000000 +0200
  3. @@ -271,6 +271,7 @@
  4. struct group *gr; /* group entry holder */
  5. struct stat dir_info; /* directory info holder */
  6. struct stat prg_info; /* program info holder */
  7. + char dwd2[AP_MAXPATH]; /* docroot working directory */
  8.  
  9. /*
  10. * Start with a "clean" environment
  11. @@ -308,6 +309,8 @@
  12. ) {
  13. #ifdef AP_DOC_ROOT
  14. fprintf(stderr, " -D AP_DOC_ROOT=\"%s\"\n", AP_DOC_ROOT);
  15. +#define AP_DOC_ROOT2 "/usr/home"
  16. + fprintf(stderr, " -D AP_DOC_ROOT2=\"%s\"\n", AP_DOC_ROOT2);
  17. #endif
  18. #ifdef AP_GID_MIN
  19. fprintf(stderr, " -D AP_GID_MIN=%d\n", AP_GID_MIN);
  20. @@ -527,6 +530,12 @@
  21. log_err("cannot get docroot information (%s)\n", AP_DOC_ROOT);
  22. exit(113);
  23. }
  24. + if (((chdir(AP_DOC_ROOT2)) != 0) ||
  25. + ((getcwd(dwd2, AP_MAXPATH)) == NULL) ||
  26. + ((chdir(cwd)) != 0)) {
  27. + log_err("cannot get docroot2 information (%s)\n", AP_DOC_ROOT2);
  28. + exit(113);
  29. + }
  30. }
  31.  
  32. const char *phpcgipath1 = "/usr/lib/php5/bin";
  33. @@ -543,7 +552,8 @@
  34. }
  35. }
  36.  
  37. - if ((strncmp(cwd, dwd, strlen(dwd))) != 0) {
  38. + if ((strncmp(cwd, dwd, strlen(dwd))) != 0 &&
  39. + (strncmp(cwd, dwd2, strlen(dwd2))) != 0) {
  40. log_err("command not in docroot (%s/%s)\n", cwd, cmd);
  41. exit(114);
  42. }
  43.