forked from M-Labs/artiq
comm_kernel: check if elements are within bounds for RPC list (#1824)
This commit is contained in:
parent
4f87531565
commit
57e2ec629b
|
@ -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