Show More
@@ -80,6 +80,7 b' from . import (' | |||||
80 | obsutil, |
|
80 | obsutil, | |
81 | phases, |
|
81 | phases, | |
82 | policy, |
|
82 | policy, | |
|
83 | pycompat, | |||
83 | util, |
|
84 | util, | |
84 | ) |
|
85 | ) | |
85 | from .utils import dateutil |
|
86 | from .utils import dateutil | |
@@ -600,6 +601,16 b' class obsstore(object):' | |||||
600 | raise ValueError(_('in-marker cycle with %s') % node.hex(prec)) |
|
601 | raise ValueError(_('in-marker cycle with %s') % node.hex(prec)) | |
601 |
|
602 | |||
602 | metadata = tuple(sorted(metadata.iteritems())) |
|
603 | metadata = tuple(sorted(metadata.iteritems())) | |
|
604 | for k, v in metadata: | |||
|
605 | try: | |||
|
606 | # might be better to reject non-ASCII keys | |||
|
607 | k.decode('utf-8') | |||
|
608 | v.decode('utf-8') | |||
|
609 | except UnicodeDecodeError: | |||
|
610 | raise error.ProgrammingError( | |||
|
611 | 'obsstore metadata must be valid UTF-8 sequence ' | |||
|
612 | '(key = %r, value = %r)' | |||
|
613 | % (pycompat.bytestr(k), pycompat.bytestr(v))) | |||
603 |
|
614 | |||
604 | marker = (bytes(prec), tuple(succs), int(flag), metadata, date, parents) |
|
615 | marker = (bytes(prec), tuple(succs), int(flag), metadata, date, parents) | |
605 | return bool(self.add(transaction, [marker])) |
|
616 | return bool(self.add(transaction, [marker])) |
General Comments 0
You need to be logged in to leave comments.
Login now