commit:     9b31cd9f2823d742ce3431e480561244f00f1744
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Sun Sep 18 22:10:54 2016 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Sun Sep 18 22:13:45 2016 +0000
URL:        https://gitweb.gentoo.org/proj/portage.git/commit/?id=9b31cd9f

writeable_check: warn about invalid mountinfo lines (bug 594284)

X-Gentoo-bug: 594284
X-Gentoo-bug-url: https://bugs.gentoo.org/show_bug.cgi?id=594284

 pym/portage/util/writeable_check.py | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/pym/portage/util/writeable_check.py 
b/pym/portage/util/writeable_check.py
index 26fe199..e5b14c0 100644
--- a/pym/portage/util/writeable_check.py
+++ b/pym/portage/util/writeable_check.py
@@ -44,6 +44,7 @@ def linux_ro_checker(dir_list):
        read-only, may be empty.
        """
        ro_filesystems = set()
+       invalids = []
 
        try:
                with io.open("/proc/self/mountinfo", mode='r',
@@ -61,6 +62,7 @@ def linux_ro_checker(dir_list):
                                        _dir, attr1 = mount[0].split()[4:6]
                                except ValueError:
                                        # If it raises ValueError we can simply 
ignore the line.
+                                       invalids.append(line)
                                        continue
                                # check for situation with invalid entries for 
/home and /root in /proc/self/mountinfo
                                # root path is missing sometimes on WSL
@@ -72,7 +74,11 @@ def linux_ro_checker(dir_list):
                                                try:
                                                        attr2 = 
mount[1].split()[1]
                                                except IndexError:
-                                                       attr2 = mount[1]
+                                                       invalids.append(line)
+                                                       continue
+                               else:
+                                       invalids.append(line)
+                                       continue
                                if attr1.startswith('ro') or 
attr2.startswith('ro'):
                                        ro_filesystems.add(_dir)
 
@@ -83,6 +89,10 @@ def linux_ro_checker(dir_list):
                        level=logging.WARNING, noiselevel=-1)
                return []
 
+       for line in invalids:
+               writemsg_level(_("!!! /proc/self/mountinfo contains 
unrecognized line: %s\n")
+                       % line.rstrip(), level=logging.WARNING, noiselevel=-1)
+
        ro_devs = {}
        for x in ro_filesystems:
                try:

Reply via email to