SFTP: fix chgrp() for version < 4

$uid and $gid were flipped with dbfc7622571
This commit is contained in:
PetrP 2022-01-08 16:57:10 +01:00 committed by terrafrost
parent 9b587a87c0
commit 888867e7b6
2 changed files with 18 additions and 1 deletions

View File

@ -1779,7 +1779,7 @@ class Net_SFTP extends Net_SSH2
function chgrp($filename, $gid, $recursive = false)
{
$attr = $this->version < 4 ?
pack('N3', NET_SFTP_ATTR_UIDGID, $gid, -1) :
pack('N3', NET_SFTP_ATTR_UIDGID, -1, $gid) :
pack('NNa*Na*', NET_SFTP_ATTR_OWNERGROUP, 0, '', strlen($gid), $gid);
return $this->_setstat($filename, $attr, $recursive);

View File

@ -754,5 +754,22 @@ class Functional_Net_SFTPUserStoryTest extends PhpseclibFunctionalTestCase
$list_cache_disabled = $sftp->rawlist('.', true);
$this->assertEquals($list_cache_enabled, $list_cache_disabled, 'The files should be the same regardless of stat cache', 0.0, 10, true);
return $sftp;
}
/**
* @depends testRawlistDisabledStatCache
*/
public function testChownChgrp($sftp)
{
$stat = $sftp->stat(self::$scratchDir);
$this->assertTrue($sftp->chown(self::$scratchDir, $stat['uid']));
$this->assertTrue($sftp->chgrp(self::$scratchDir, $stat['gid']));
$sftp->clearStatCache();
$stat2 = $sftp->stat(self::$scratchDir);
$this->assertSame($stat['uid'], $stat2['uid']);
$this->assertSame($stat['gid'], $stat2['gid']);
}
}