From: Zac Medico Date: Sun, 21 May 2006 04:41:13 +0000 (-0000) Subject: Validate the CATEGORY data in portage.config.load_infodir() and print a warning messa... X-Git-Tag: v2.1_rc2~7 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=b8b2a3ee61134fd9595b7fe53ed83060eb69796b;p=portage.git Validate the CATEGORY data in portage.config.load_infodir() and print a warning message if corruption is detected. svn path=/main/trunk/; revision=3382 --- diff --git a/pym/portage.py b/pym/portage.py index 2a3ec7baa..7522dc18a 100644 --- a/pym/portage.py +++ b/pym/portage.py @@ -1448,9 +1448,17 @@ class config: self.configdict["pkg"][filename] = "-* "+mydata else: self.configdict["pkg"][filename] = mydata - except SystemExit, e: - raise - except: + # CATEGORY is important because it's used in doebuild + # to infer the cpv. If it's corrupted, it leads to + # strange errors later on, so we'll validate it and + # print a warning if necessary. + if filename == "CATEGORY": + matchobj = re.match("[-a-zA-Z0-9_.+]+", mydata) + if not matchobj or matchobj.start() != 0 or \ + matchobj.end() != len(mydata): + writemsg("!!! CATEGORY file is corrupt: %s\n" % \ + os.path.join(infodir, filename)) + except (OSError, IOError): writemsg("!!! Unable to read file: %s\n" % infodir+"/"+filename) pass return 1