comparison mercurial/changelog.py @ 2523:4ab59a3acd16

validate the resulting date in parsedate
author Benoit Boissinot <benoit.boissinot@ens-lyon.org>
date Fri, 30 Jun 2006 18:48:06 +0200
parents 85f796baab10
children 345bac2bc4ec
comparison
equal deleted inserted replaced
2522:85f796baab10 2523:4ab59a3acd16
37 return self.extract(self.revision(node)) 37 return self.extract(self.revision(node))
38 38
39 def add(self, manifest, list, desc, transaction, p1=None, p2=None, 39 def add(self, manifest, list, desc, transaction, p1=None, p2=None,
40 user=None, date=None): 40 user=None, date=None):
41 if date: 41 if date:
42 # validate explicit (probably user-specified) date and 42 parseddate = "%d %d" % util.parsedate(date)
43 # time zone offset. values must fit in signed 32 bits for
44 # current 32-bit linux runtimes. timezones go from UTC-12
45 # to UTC+14
46 when, offset = util.parsedate(date)
47 if abs(when) > 0x7fffffff:
48 raise ValueError(_('date exceeds 32 bits: %d') % when)
49 if offset < -50400 or offset > 43200:
50 raise ValueError(_('impossible time zone offset: %d') % offset)
51 parseddate = "%d %d" % (when, offset)
52 else: 43 else:
53 parseddate = "%d %d" % util.makedate() 44 parseddate = "%d %d" % util.makedate()
54 list.sort() 45 list.sort()
55 l = [hex(manifest), user, parseddate] + list + ["", desc] 46 l = [hex(manifest), user, parseddate] + list + ["", desc]
56 text = "\n".join(l) 47 text = "\n".join(l)