summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2005-04-13 02:58:58 +0000
committerbescoto <bescoto@2b77aa54-bcbc-44c9-a7ec-4f6cf2b41109>2005-04-13 02:58:58 +0000
commitb71f6ba4a153baf15a7f77f6aa461f6691229f6f (patch)
tree59c883c9fbea41a24ca0e194ba07e9a45e81f0e2
parented42f82f05df39833f996d3cf2a1783eb783bd38 (diff)
downloadrdiff-backup-b71f6ba4a153baf15a7f77f6aa461f6691229f6f.tar.gz
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
-rw-r--r--rdiff-backup/CHANGELOG7
-rw-r--r--rdiff-backup/rdiff_backup/user_group.py4
-rw-r--r--rdiff-backup/testing/user_grouptest.py9
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()