1
0
mirror of https://github.com/danog/phpseclib.git synced 2024-11-27 12:55:58 +01:00

Merge branch '1.0-mkdir-mode-adjustment' into 2.0-mkdir-mode-adjustment

This commit is contained in:
terrafrost 2020-03-28 18:05:49 -05:00
commit 7e67f882ee

View File

@ -1776,9 +1776,6 @@ class SFTP extends SSH2
}
$dir = $this->_realpath($dir);
// by not providing any permissions, hopefully the server will use the logged in users umask - their
// default permissions.
$attr = $mode == -1 ? "\0\0\0\0" : pack('N2', NET_SFTP_ATTR_PERMISSIONS, $mode & 07777);
if ($recursive) {
$dirs = explode('/', preg_replace('#/(?=/)|/$#', '', $dir));
@ -1789,12 +1786,12 @@ class SFTP extends SSH2
for ($i = 0; $i < count($dirs); $i++) {
$temp = array_slice($dirs, 0, $i + 1);
$temp = implode('/', $temp);
$result = $this->_mkdir_helper($temp, $attr);
$result = $this->_mkdir_helper($temp, $mode);
}
return $result;
}
return $this->_mkdir_helper($dir, $attr);
return $this->_mkdir_helper($dir, $mode);
}
/**
@ -1804,9 +1801,10 @@ class SFTP extends SSH2
* @return bool
* @access private
*/
function _mkdir_helper($dir, $attr)
function _mkdir_helper($dir, $mode)
{
if (!$this->_send_sftp_packet(NET_SFTP_MKDIR, pack('Na*a*', strlen($dir), $dir, $attr))) {
// send SSH_FXP_MKDIR without any attributes (that's what the \0\0\0\0 is doing)
if (!$this->_send_sftp_packet(NET_SFTP_MKDIR, pack('Na*a*', strlen($dir), $dir, "\0\0\0\0"))) {
return false;
}
@ -1825,6 +1823,10 @@ class SFTP extends SSH2
return false;
}
if ($mode !== -1) {
$this->chmod($mode, $dir);
}
return true;
}