Permalink
Browse files

packager: TransformCache: include UID + do not use base64

Summary:
Two things in there:

* Using `base64` was kinda broken, as it can contain slashes, invalid in file names. It would still work however because it would just create a second level folder when doing `mkdirp`. Still I think it's better to fix that correctness.
* Include the UID in the hash, so that different users have different folders for sure, and that we reduce potiential permissions issues. `tmpdir()` already returns a folder that's user-specific on OS X, but this is not a guarantee on all platforms.

Reviewed By: cpojer

Differential Revision: D4969856

fbshipit-source-id: 4a9be35104ac9698edf2c84c58d395ee171ce2a8
  • Loading branch information...
jeanlauliac authored and facebook-github-bot committed Apr 28, 2017
1 parent eb72d50 commit 1e6bca22db6d43478da910543a800e641f96335d
Showing with 10 additions and 9 deletions.
  1. +10 −9 packager/src/lib/TransformCache.js
@@ -39,16 +39,17 @@ const CACHE_SUB_DIR = 'cache';
const getCacheDirPath = (function() {
let dirPath;
return function() {
if (dirPath == null) {
dirPath = path.join(
require('os').tmpdir(),
CACHE_NAME + '-' + crypto.createHash('sha1')
.update(__dirname).digest('base64'),
);
require('debug')('RNP:TransformCache:Dir')(
`transform cache directory: ${dirPath}`
);
if (dirPath != null) {
return dirPath;
}
const hash = crypto.createHash('sha1').update(__dirname);
if (process.getuid != null) {
hash.update(process.getuid().toString());
}
dirPath = path.join(require('os').tmpdir(), CACHE_NAME + '-' + hash.digest('hex'));
require('debug')('RNP:TransformCache:Dir')(
`transform cache directory: ${dirPath}`
);
return dirPath;
};
})();

0 comments on commit 1e6bca2

Please sign in to comment.