mirror of
https://github.com/m-labs/artiq.git
synced 2024-12-24 19:04:02 +08:00
comm_kernel: check if elements are within bounds for RPC list (#1824)
This commit is contained in:
parent
4eee49f889
commit
de5892a00a
@ -476,11 +476,19 @@ class CommKernel:
|
||||
if tag_element == "b":
|
||||
self._write(bytes(value))
|
||||
elif tag_element == "i":
|
||||
self._write(struct.pack(self.endian + "%sl" %
|
||||
len(value), *value))
|
||||
try:
|
||||
self._write(struct.pack(self.endian + "%sl" % len(value), *value))
|
||||
except struct.error:
|
||||
raise RPCReturnValueError(
|
||||
"type mismatch: cannot serialize {value} as {type}".format(
|
||||
value=repr(value), type="32-bit integer list"))
|
||||
elif tag_element == "I":
|
||||
self._write(struct.pack(self.endian + "%sq" %
|
||||
len(value), *value))
|
||||
try:
|
||||
self._write(struct.pack(self.endian + "%sq" % len(value), *value))
|
||||
except struct.error:
|
||||
raise RPCReturnValueError(
|
||||
"type mismatch: cannot serialize {value} as {type}".format(
|
||||
value=repr(value), type="64-bit integer list"))
|
||||
elif tag_element == "f":
|
||||
self._write(struct.pack(self.endian + "%sd" %
|
||||
len(value), *value))
|
||||
|
Loading…
Reference in New Issue
Block a user