From 6d3c032312b256f8098f945ca5f53aaba6a4824b Mon Sep 17 00:00:00 2001 From: Jarrod Johnson Date: Tue, 7 Apr 2020 08:52:51 -0400 Subject: [PATCH] Fix KCS on python 2 In python2, cannot directly copy a memoryview to a ctypes string. Catch and try with a copy of the memoryview data for python2. Change-Id: I6dc0183921e4e888aca131fe7968d820b25dc5d5 --- pyghmi/ipmi/private/localsession.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pyghmi/ipmi/private/localsession.py b/pyghmi/ipmi/private/localsession.py index b637053a..1c22ee9f 100644 --- a/pyghmi/ipmi/private/localsession.py +++ b/pyghmi/ipmi/private/localsession.py @@ -121,9 +121,12 @@ class Session(object): self.req.addr = ctypes.pointer(self.addr) self.req.msg.netfn = netfn self.req.msg.cmd = command - data = memoryview(bytearray(data)) if data: - self.databuffer[:len(data)] = data[:len(data)] + data = memoryview(bytearray(data)) + try: + self.databuffer[:len(data)] = data[:len(data)] + except ValueError: + self.databuffer[:len(data)] = data[:len(data)].tobytes() self.req.msg.data_len = len(data) fcntl.ioctl(self.ipmidev, IPMICTL_SEND_COMMAND, self.req) self.await_reply()