comparison mercurial/changelog.py @ 1197:8deb69818e4b

Date validation must check for 32-bit width. Don't use assert to check.
author Bryan O'Sullivan <bos@serpentine.com>
date Sat, 03 Sep 2005 23:51:53 -0700
parents 3738e85ead07
children 71111d796e40
comparison
equal deleted inserted replaced
1196:3738e85ead07 1197:8deb69818e4b
31 31
32 def add(self, manifest, list, desc, transaction, p1=None, p2=None, 32 def add(self, manifest, list, desc, transaction, p1=None, p2=None,
33 user=None, date=None): 33 user=None, date=None):
34 if date: 34 if date:
35 # validate explicit (probably user-specified) date and 35 # validate explicit (probably user-specified) date and
36 # time zone offset 36 # time zone offset. values must fit in signed 32 bits for
37 # current 32-bit linux runtimes.
37 when, offset = map(int, date.split(' ')) 38 when, offset = map(int, date.split(' '))
38 time.localtime(when) 39 if abs(when) > 0x7fffffff:
39 assert abs(offset) < 43200, 'bad time zone offset: %d' % offset 40 raise ValueError('date exceeds 32 bits: %d' % when)
41 if abs(offset) >= 43200:
42 raise ValueError('impossible time zone offset: %d' % offset)
40 else: 43 else:
41 if time.daylight: offset = time.altzone 44 if time.daylight: offset = time.altzone
42 else: offset = time.timezone 45 else: offset = time.timezone
43 date = "%d %d" % (time.time(), offset) 46 date = "%d %d" % (time.time(), offset)
44 list.sort() 47 list.sort()