Browse Source

Make chmod in safe mode not allow SUID bits

PHP-4.0.5
Stanislav Malyshev 26 years ago
parent
commit
6cac26c21f
  1. 12
      ext/standard/filestat.c

12
ext/standard/filestat.c

@ -324,7 +324,7 @@ PHP_FUNCTION(chown)
PHP_FUNCTION(chmod)
{
pval **filename, **mode;
int ret;
int ret,imode;
PLS_FETCH();
if (ZEND_NUM_ARGS()!=2 || zend_get_parameters_ex(2,&filename,&mode)==FAILURE) {
@ -341,7 +341,15 @@ PHP_FUNCTION(chmod)
if (php_check_open_basedir((*filename)->value.str.val))
RETURN_FALSE;
ret = chmod((*filename)->value.str.val, (*mode)->value.lval);
imode = (*mode)->value.lval;
/* in safe mode, do not allow to setuid files.
Setuiding files could allow users to gain privileges
that safe mode doesn't give them.
*/
if(PG(safe_mode))
imode &= 0777;
ret = chmod((*filename)->value.str.val, imode);
if (ret == -1) {
php_error(E_WARNING, "chmod failed: %s", strerror(errno));
RETURN_FALSE;

Loading…
Cancel
Save