Skip to content

Commit 235e5d6

Browse files
committedJul 16, 2019
search: ensure correct owner on all-packages metadata
1 parent 2c61ce6 commit 235e5d6

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed
 

‎lib/search/all-package-metadata.js

+15-3
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ function extractUpdated (entryStream, label, opts) {
217217
// be output from it.
218218
module.exports._createCacheWriteStream = createCacheWriteStream
219219
function createCacheWriteStream (cacheFile, latest, opts) {
220-
return _ensureCacheDirExists(cacheFile, opts).then(() => {
220+
return _ensureCacheDirExists(cacheFile, opts).then(({uid, gid}) => {
221221
log.silly('all-package-metadata', 'creating output stream')
222222
const outStream = _createCacheOutStream()
223223
const cacheFileStream = writeStreamAtomic(cacheFile)
@@ -231,19 +231,31 @@ function createCacheWriteStream (cacheFile, latest, opts) {
231231
let errEmitted = false
232232
linkStreams(inputStream, outStream, () => { errEmitted = true })
233233

234-
cacheFileStream.on('close', () => !errEmitted && outStream.end())
234+
cacheFileStream.on('close', () => {
235+
if (!errEmitted) {
236+
if (typeof uid === 'number' &&
237+
typeof gid === 'number' &&
238+
process.getuid &&
239+
process.getgid &&
240+
(process.getuid() !== uid || process.getgid() !== gid)) {
241+
chownr.sync(cacheFile, uid, gid)
242+
}
243+
outStream.end()
244+
}
245+
})
235246

236247
return ms.duplex.obj(inputStream, outStream)
237248
})
238249
}
239250

251+
// return the {uid,gid} that the cache should have
240252
function _ensureCacheDirExists (cacheFile, opts) {
241253
var cacheBase = path.dirname(cacheFile)
242254
log.silly('all-package-metadata', 'making sure cache dir exists at', cacheBase)
243255
return correctMkdir(opts.cache).then(st => {
244256
return mkdir(cacheBase).then(made => {
245257
return chownr(made || cacheBase, st.uid, st.gid)
246-
})
258+
}).then(() => ({ uid: st.uid, gid: st.gid }))
247259
})
248260
}
249261

0 commit comments

Comments
 (0)
Please sign in to comment.