Page MenuHomePhabricator

D21759.diff
No OneTemporary

D21759.diff

diff --git a/src/applications/diffusion/conduit/DiffusionBrowseQueryConduitAPIMethod.php b/src/applications/diffusion/conduit/DiffusionBrowseQueryConduitAPIMethod.php
--- a/src/applications/diffusion/conduit/DiffusionBrowseQueryConduitAPIMethod.php
+++ b/src/applications/diffusion/conduit/DiffusionBrowseQueryConduitAPIMethod.php
@@ -229,11 +229,19 @@
$commit);
if (!$err) {
- $tmp = new TempFile();
- Filesystem::writeFile($tmp, $contents);
- list($module_info) = $repository->execxLocalCommand(
- 'config -l -f %s',
- $tmp);
+
+ // NOTE: After T13673, the user executing "git" may not be the same
+ // as the user this process is running as (usually the webserver user),
+ // so we can't reliably use a temporary file: the daemon user may not
+ // be able to use it.
+
+ // Use "--file -" to read from stdin instead. If this fails in some
+ // older versions of Git, we could exempt this particular command from
+ // sudoing to the daemon user.
+
+ $future = $repository->getLocalCommandFuture('config -l --file - --');
+ $future->write($contents);
+ list($module_info) = $future->resolvex();
$dict = array();
$lines = explode("\n", trim($module_info));

File Metadata

Mime Type
text/plain
Expires
Wed, May 8, 11:10 PM (3 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6273438
Default Alt Text
D21759.diff (1 KB)

Event Timeline