summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomasz Dziendzielski <tomasz.dziendzielski@gmail.com>2021-02-01 01:32:56 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-02-10 23:55:53 +0000
commitfb3995faec26b19978554326f1739715ed63b809 (patch)
tree736982ee00be0f271ca243013d956a8bcc514487
parent4929a3c12e31855ce2481cfac9eb7d5792d2f5ea (diff)
downloadpoky-fb3995faec26b19978554326f1739715ed63b809.tar.gz
sstatesig: Add descriptive error message to getpwuid/getgrgid "uid/gid not found" KeyError
If path is not owned by any user installed on target it gives insufficient error "getpwuid(): uid not found" which may be misleading. This exception occurs if uid/gid of path was not found in PSEUDO_PASSWD files, which simply means the path is owned by host user and there is host user contamination. Add more information to the exception message to make it easier for user to debug. [YOCTO #14031] (From OE-Core rev: 887f0a606dd323de1098e8e8a0d65b8351b4006d) Signed-off-by: Tomasz Dziendzielski <tomasz.dziendzielski@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> (cherry picked from commit 38540b59ed4ec8632e30a5fd6364b010d9da8470) Signed-off-by: Steve Sakoman <steve@sakoman.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/lib/oe/sstatesig.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/meta/lib/oe/sstatesig.py b/meta/lib/oe/sstatesig.py
index f98543cc46..aeceb100d7 100644
--- a/meta/lib/oe/sstatesig.py
+++ b/meta/lib/oe/sstatesig.py
@@ -552,9 +552,11 @@ def OEOuthashBasic(path, sigfile, task, d):
552 try: 552 try:
553 update_hash(" %10s" % pwd.getpwuid(s.st_uid).pw_name) 553 update_hash(" %10s" % pwd.getpwuid(s.st_uid).pw_name)
554 update_hash(" %10s" % grp.getgrgid(s.st_gid).gr_name) 554 update_hash(" %10s" % grp.getgrgid(s.st_gid).gr_name)
555 except KeyError: 555 except KeyError as e:
556 bb.warn("KeyError in %s" % path) 556 bb.warn("KeyError in %s" % path)
557 raise 557 msg = ("KeyError: %s\nPath %s is owned by uid %d, gid %d, which doesn't match "
558 "any user/group on target. This may be due to host contamination." % (e, path, s.st_uid, s.st_gid))
559 raise Exception(msg).with_traceback(e.__traceback__)
558 560
559 if include_timestamps: 561 if include_timestamps:
560 update_hash(" %10d" % s.st_mtime) 562 update_hash(" %10d" % s.st_mtime)