From: Zac Medico Date: Sun, 16 Jan 2011 12:32:23 +0000 (-0800) Subject: CONTENTS: handle malformed sym entries X-Git-Tag: v2.2.0_alpha16~9 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=f7d169d516a2fbaf457057cb5e17a84f9ad13d04;p=portage.git CONTENTS: handle malformed sym entries This will fix bug #351814. --- diff --git a/pym/portage/dbapi/vartree.py b/pym/portage/dbapi/vartree.py index 9f75da21b..7a1ef5929 100644 --- a/pym/portage/dbapi/vartree.py +++ b/pym/portage/dbapi/vartree.py @@ -1196,7 +1196,8 @@ class dblink(object): _contents_re = re.compile(r'^(' + \ r'(?P(dev|dir|fif) (.+))|' + \ r'(?P(obj) (.+) (\S+) (\d+))|' + \ - r'(?P(sym) (.+) -> (.+) (\d+))' + \ + r'(?P(sym) (.+) -> (.+) ((\d+)|(?P(' + \ + '\(\d+, \d+L, \d+L, \d+, \d+, \d+, \d+L, \d+, (\d+), \d+\)))))' + \ r')$' ) @@ -1379,6 +1380,9 @@ class dblink(object): obj_index = contents_re.groupindex['obj'] dir_index = contents_re.groupindex['dir'] sym_index = contents_re.groupindex['sym'] + # The old symlink format may exist on systems that have packages + # which were installed many years ago (see bug #351814). + oldsym_index = contents_re.groupindex['oldsym'] # CONTENTS files already contain EPREFIX myroot = self.settings['ROOT'] if myroot == os.path.sep: @@ -1406,8 +1410,12 @@ class dblink(object): data = (m.group(base+1),) elif m.group(sym_index) is not None: base = sym_index + if m.group(oldsym_index) is None: + mtime = m.group(base+5) + else: + mtime = m.group(base+8) #format: type, mtime, dest - data = (m.group(base+1), m.group(base+4), m.group(base+3)) + data = (m.group(base+1), mtime, m.group(base+3)) else: # This won't happen as long the regular expression # is written to only match valid entries.