summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrediano Ziglio <fziglio@redhat.com>2018-05-18 09:35:29 +0100
committerFrediano Ziglio <freddy77@gmail.com>2023-12-16 18:48:24 +0000
commit31e203e243942e8c617f0088901c0881ad7aee54 (patch)
tree3fb93549c1b9fc34ae956ef08c2fc85cb93f4d58
parentb0c67c3372ce771a26605ae5a1c801d6cd4dde47 (diff)
-rw-r--r--python_modules/marshal.py3
-rw-r--r--python_modules/ptypes.py2
-rw-r--r--python_modules/spice_parser.py4
-rw-r--r--spice.proto3
4 files changed, 7 insertions, 5 deletions
diff --git a/python_modules/marshal.py b/python_modules/marshal.py
index a2dfab6..79cadbb 100644
--- a/python_modules/marshal.py
+++ b/python_modules/marshal.py
@@ -186,6 +186,9 @@ def get_array_size(array, container_src):
def write_array_marshaller(writer, member, array, container_src, scope):
element_type = array.element_type
+ if member.has_attr("nomarshal"):
+ writer.comment("Don't marshall @nomarshal %s" % array.name).newline()
+ return
if array.is_remaining_length():
writer.comment("Remaining data must be appended manually").newline()
return
diff --git a/python_modules/ptypes.py b/python_modules/ptypes.py
index d68dc67..6cc77ed 100644
--- a/python_modules/ptypes.py
+++ b/python_modules/ptypes.py
@@ -942,7 +942,7 @@ class ContainerType(Type):
break
if member == None:
- raise Exception("No member called %s found" % name)
+ raise Exception("No member called %s found %s" % (name, self.name))
if rest != None:
return member.member_type.lookup_member(rest)
diff --git a/python_modules/spice_parser.py b/python_modules/spice_parser.py
index 1dc7e22..9ec6a63 100644
--- a/python_modules/spice_parser.py
+++ b/python_modules/spice_parser.py
@@ -92,8 +92,8 @@ def SPICE_BNF():
attributes = Group(ZeroOrMore(attribute))
arraySizeSpecImage = Group(image_size_ + lparen + integer + comma + identifier + comma + identifier + rparen)
arraySizeSpecCString = Group(cstring_ + lparen + rparen)
- arraySizeSpec = lbrack + Optional(identifier ^ integer ^ arraySizeSpecImage ^ arraySizeSpecCString, default="") + rbrack
- variableDef = Group(typeSpec + Optional("*", default=None) + identifier + Optional(arraySizeSpec, default=None) + attributes - semi) \
+ arraySizeSpec = lbrack + Optional(delimitedList(identifier,delim='.', combine=True) ^ integer ^ arraySizeSpecImage ^ arraySizeSpecCString, default="") + rbrack
+ variableDef = Group(typeSpec + Optional("*", default=None) + delimitedList(identifier,delim='.', combine=True) + Optional(arraySizeSpec, default=None) + attributes - semi) \
.setParseAction(parseVariableDef)
switchCase = Group(Group(OneOrMore(default_.setParseAction(replaceWith(None)) + colon | Group(case_.suppress() + Optional("!", default="") + identifier) + colon)) + variableDef) \
diff --git a/spice.proto b/spice.proto
index 63c639c..3042ac3 100644
--- a/spice.proto
+++ b/spice.proto
@@ -1295,10 +1295,9 @@ channel SmartcardChannel : BaseChannel {
VscMessageHeader header;
switch (header.type) {
case ReaderAdd:
- VscMessageReaderAdd add;
case ATR:
case APDU:
- VscMessageATR atr_data;
+ uint8 raw_data[header.length] @end @nomarshal;
case Error:
VscMessageError error;
} u @anon;