From 4296fe657f3e0568f3e820473831536f254813e0 Mon Sep 17 00:00:00 2001 From: William Sandin Date: Sat, 6 Jan 2018 19:02:14 +0700 Subject: [PATCH] Adding check to confirm POSIX is defined and callable --- src/Composer/Command/SelfUpdateCommand.php | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/Composer/Command/SelfUpdateCommand.php b/src/Composer/Command/SelfUpdateCommand.php index 1f86e7ed9..147d65c02 100644 --- a/src/Composer/Command/SelfUpdateCommand.php +++ b/src/Composer/Command/SelfUpdateCommand.php @@ -93,9 +93,7 @@ EOT $cacheDir = $config->get('cache-dir'); $rollbackDir = $config->get('data-dir'); $home = $config->get('home'); - $homeOwner = posix_getpwuid(fileowner($home)); $localFilename = realpath($_SERVER['argv'][0]) ?: $_SERVER['argv'][0]; - $composeUser = posix_getpwuid(posix_geteuid()); if ($input->getOption('update-keys')) { return $this->fetchKeys($io, $config); @@ -109,9 +107,13 @@ EOT throw new FilesystemException('Composer update failed: the "'.$tmpDir.'" directory used to download the temp file could not be written'); } - // check if composer is running as the same user that owns the directory root - if ($composeUser !== $homeOwner) { - $io->writeError('You are running composer as "'.$composeUser.'", while "'.$home.'" is owned by "'.$homeOwner.'"'); + // check if composer is running as the same user that owns the directory root, only if POSIX is defined and callable + if (function_exists('posix_getpwuid') && function_exists('posix_geteuid')) { + $composeUser = posix_getpwuid(posix_geteuid()); + $homeOwner = posix_getpwuid(fileowner($home)); + if ($composeUser !== $homeOwner) { + $io->writeError('You are running composer as "'.$composeUser.'", while "'.$home.'" is owned by "'.$homeOwner.'"'); + } } if ($input->getOption('rollback')) {