diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2014-02-10 16:04:09 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2014-02-10 16:04:09 +0000 |
| commit | 8eb42f47a10f084fbc3d9e36b8b562d7f3c590b5 (patch) | |
| tree | bead758eef0c5ae759cbe1ed7938c6ce99ae9627 /codegen.py | |
| parent | 03bcc89029dae7ab611b3436a1a139a0a071f1a0 (diff) | |
| parent | 8e2791065b6954931b6ec985dc63bab57d7f281e (diff) | |
| download | rabbitmq-server-git-8eb42f47a10f084fbc3d9e36b8b562d7f3c590b5.tar.gz | |
Merge bug26000
Diffstat (limited to 'codegen.py')
| -rw-r--r-- | codegen.py | 8 |
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): |
