From b71f6ba4a153baf15a7f77f6aa461f6691229f6f Mon Sep 17 00:00:00 2001 From: bescoto Date: Wed, 13 Apr 2005 02:58:58 +0000 Subject: Fix for when 64 bit uids read from FS, but only 16 bit ones supported git-svn-id: http://svn.savannah.nongnu.org/svn/rdiff-backup/trunk@582 2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109 --- rdiff-backup/CHANGELOG | 7 +++++++ rdiff-backup/rdiff_backup/user_group.py | 4 ++-- rdiff-backup/testing/user_grouptest.py | 9 +++++++-- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/rdiff-backup/CHANGELOG b/rdiff-backup/CHANGELOG index f7933d6..1aeaeb2 100644 --- a/rdiff-backup/CHANGELOG +++ b/rdiff-backup/CHANGELOG @@ -1,3 +1,10 @@ +New in v0.13.7 (????/??/??) +--------------------------- + +Handle cases of junk uid/gids better on 64bit systems. (Bug report by +Nick Bailey) + + New in v0.13.6 (2005/04/07) --------------------------- diff --git a/rdiff-backup/rdiff_backup/user_group.py b/rdiff-backup/rdiff_backup/user_group.py index b34f0cf..3b82d23 100644 --- a/rdiff-backup/rdiff_backup/user_group.py +++ b/rdiff-backup/rdiff_backup/user_group.py @@ -47,7 +47,7 @@ def uid2uname(uid): try: return uid2uname_dict[uid] except KeyError: try: uname = pwd.getpwuid(uid)[0] - except KeyError: uname = None + except (KeyError, OverflowError), e: uname = None uid2uname_dict[uid] = uname return uname @@ -56,7 +56,7 @@ def gid2gname(gid): try: return gid2gname_dict[gid] except KeyError: try: gname = grp.getgrgid(gid)[0] - except KeyError: gname = None + except (KeyError, OverflowError), e: gname = None gid2gname_dict[gid] = gname return gname diff --git a/rdiff-backup/testing/user_grouptest.py b/rdiff-backup/testing/user_grouptest.py index a103ee7..73c8bcf 100644 --- a/rdiff-backup/testing/user_grouptest.py +++ b/rdiff-backup/testing/user_grouptest.py @@ -49,7 +49,12 @@ sync:0""" assert user_group.UserMap.get_id(123, 'daemon') == daemonid if 0: code.InteractiveConsole(globals()).interact() - - + + def test_overflow(self): + """Make sure querying large uids/gids doesn't raise exception""" + large_num = 4000000000 + assert user_group.uid2uname(large_num) is None + assert user_group.gid2gname(large_num) is None + if __name__ == "__main__": unittest.main() -- cgit v1.2.1