summaryrefslogtreecommitdiff
path: root/codegen.py
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-03-04 13:40:10 +0000
committerSimon MacMullen <simon@rabbitmq.com>2014-03-04 13:40:10 +0000
commitfec03ef2e4938b5c7fbb0d8bd1c16daca090de4a (patch)
tree0b7c5b2660062fa3d632a9fa28f76c1edff944b0 /codegen.py
parent1b1582f839c13614925158397f1e9f0562357882 (diff)
parentc43130f1411908cb62bb6af1f1ff79a1f5e5338f (diff)
downloadrabbitmq-server-git-fec03ef2e4938b5c7fbb0d8bd1c16daca090de4a.tar.gz
stable to default
Diffstat (limited to 'codegen.py')
-rw-r--r--codegen.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/codegen.py b/codegen.py
index 842549cf03..91fa115423 100644
--- a/codegen.py
+++ b/codegen.py
@@ -187,7 +187,7 @@ def genErl(spec):
elif type == 'table':
return p+'Len:32/unsigned, '+p+'Tab:'+p+'Len/binary'
- def genFieldPostprocessing(packed):
+ def genFieldPostprocessing(packed, hasContent):
for f in packed:
type = erlType(f.domain)
if type == 'bit':
@@ -199,6 +199,10 @@ def genErl(spec):
elif type == 'table':
print " F%d = rabbit_binary_parser:parse_table(F%dTab)," % \
(f.index, f.index)
+ # We skip the check on content-bearing methods for
+ # speed. This is a sanity check, not a security thing.
+ elif type == 'shortstr' and not hasContent:
+ print " rabbit_binary_parser:assert_utf8(F%d)," % (f.index)
else:
pass
@@ -214,7 +218,7 @@ def genErl(spec):
restSeparator = ''
recordConstructorExpr = '#%s{%s}' % (m.erlangName(), fieldMapList(m.arguments))
print "decode_method_fields(%s, <<%s>>) ->" % (m.erlangName(), binaryPattern)
- genFieldPostprocessing(packedFields)
+ genFieldPostprocessing(packedFields, m.hasContent)
print " %s;" % (recordConstructorExpr,)
def genDecodeProperties(c):