record_size_64 = struct.calcsize(self.LASTLOG_STRUCT_64)
# some 64bit arches have 32bit-compatible lastlog structures, others don't,
# in apparently incoherent ways, so hardcode a list...
- if platform.machine() in ('ia64', 'aarch64', 's390x'):
+ if platform.machine() in ('aarch64', 's390x'):
self.LASTLOG_STRUCT = self.LASTLOG_STRUCT_64
record_size = record_size_64
else:
% (len(record), record_size))
uid += 1 # so keep incrementing uid for each record read
lastlog_time, _, _ = list(struct.unpack(self.LASTLOG_STRUCT, record))
+ if lastlog_time < 0:
+ raise RuntimeError('unexpected last login time %d for user %s'
+ % (lastlog_time, pwd.getpwuid(uid).pw_name))
try:
self[pwd.getpwuid(uid).pw_name] = lastlog_time
except KeyError: