# HG changeset patch # User Matt Mackall # Date 1240519210 18000 # Node ID e40b629bedd1730d4d97d17669380fe072245562 # Parent 7c47ac9620a856efaad60284b9b5598cd350ae72 ui: cleanup _is_trusted a bit diff -r 7c47ac9620a8 -r e40b629bedd1 mercurial/ui.py --- a/mercurial/ui.py Thu Apr 23 15:40:10 2009 -0500 +++ b/mercurial/ui.py Thu Apr 23 15:40:10 2009 -0500 @@ -37,6 +37,7 @@ self.overlay = util.configparser() self.cdata = util.configparser() self.ucdata = util.configparser() + # we always trust global config files self.readconfig(util.rcpath(), assumetrusted=True) else: @@ -63,26 +64,25 @@ ui._isatty = False return ui._isatty - def _is_trusted(self, fp, f, warn=True): + def _is_trusted(self, fp, f): st = util.fstat(fp) if util.isowner(fp, st): return True + tusers = self.trusted_users tgroups = self.trusted_groups - if not tusers: - user = util.username() - if user is not None: - self.trusted_users[user] = 1 - self.fixconfig(section='trusted') - if (tusers or tgroups) and '*' not in tusers and '*' not in tgroups: - user = util.username(st.st_uid) - group = util.groupname(st.st_gid) - if user not in tusers and group not in tgroups: - if warn and self.report_untrusted: - self.warn(_('Not trusting file %s from untrusted ' - 'user %s, group %s\n') % (f, user, group)) - return False - return True + if '*' in tusers or '*' in tgroups: + return True + + user = util.username(st.st_uid) + group = util.groupname(st.st_gid) + if user in tusers or group in tgroups or user == util.username(): + return True + + if self.report_untrusted: + self.warn(_('Not trusting file %s from untrusted ' + 'user %s, group %s\n') % (f, user, group)) + return False def readconfig(self, fn, root=None, assumetrusted=False): cdata = util.configparser() @@ -175,7 +175,7 @@ self.traceback = self.configbool('ui', 'traceback', False) # update trust information - if (section is None or section == 'trusted') and self.trusted_users: + if section is None or section == 'trusted': for user in self.configlist('trusted', 'users'): self.trusted_users[user] = 1 for group in self.configlist('trusted', 'groups'): diff -r 7c47ac9620a8 -r e40b629bedd1 tests/test-trusted.py.out --- a/tests/test-trusted.py.out Thu Apr 23 15:40:10 2009 -0500 +++ b/tests/test-trusted.py.out Thu Apr 23 15:40:10 2009 -0500 @@ -143,10 +143,9 @@ # Can't figure out the name of the user running this process # different user, different group +Not trusting file .hg/hgrc from untrusted user abc, group def trusted global = /some/path - interpolated = /some/path/another/path - local = /another/path untrusted . . global = /some/path . . interpolated = /some/path/another/path