Mercurial > hg
changeset 17752:76b73ce0ffac
vfs: use fchmod for _fixfilemode
On general principle, we should use fchmod instead of chmod to avoid
security pitfalls, although none is likely possible here.
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Thu, 11 Oct 2012 22:58:34 -0500 |
parents | 4871c1f343fa |
children | 69d5078d760d |
files | mercurial/scmutil.py |
diffstat | 1 files changed, 4 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/scmutil.py Thu Oct 11 16:05:14 2012 -0700 +++ b/mercurial/scmutil.py Thu Oct 11 22:58:34 2012 -0500 @@ -255,10 +255,10 @@ def _cansymlink(self): return util.checklink(self.base) - def _fixfilemode(self, name): + def _fixfilemode(self, fp): if self.createmode is None: return - os.chmod(name, self.createmode & 0666) + os.fchmod(fp.fileno(), self.createmode & 0666) def __call__(self, path, mode="r", text=False, atomictemp=False): if self._audit: @@ -305,7 +305,7 @@ util.rename(util.mktempcopy(f), f) fp = util.posixfile(f, mode) if nlink == 0: - self._fixfilemode(f) + self._fixfilemode(fp) return fp def symlink(self, src, dst): @@ -329,8 +329,8 @@ else: f = self(dst, "w") f.write(src) + self._fixfilemode(f) f.close() - self._fixfilemode(dst) def audit(self, path): self.auditor(path)