From e89b30aed2dbf5a3a1a8f21c37ccf17ba40398a9 Mon Sep 17 00:00:00 2001 From: David Rebbe Date: Thu, 19 Jun 2025 12:34:24 -0400 Subject: [PATCH] Fixed ics.SpyMessage.ExtraDataPtr can't handle larger than 255 length Issue #214 asdf --- src/methods.cpp | 3 +-- src/object_spy_message.cpp | 6 +++--- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/src/methods.cpp b/src/methods.cpp index 012accb0c..e6bd5f8c5 100644 --- a/src/methods.cpp +++ b/src/methods.cpp @@ -5518,7 +5518,6 @@ PyObject* meth_get_component_versions(PyObject* self, PyObject* args) // icsneoG char buffer[512]; return set_ics_exception(exception_runtime_error(), dll_get_error(buffer)); } - uint64_t imei = 0; ice::Function icsneoGetComponentVersions(lib, "icsneoGetComponentVersions"); auto gil = PyAllowThreads(); std::vector version_reports; @@ -5534,7 +5533,7 @@ PyObject* meth_get_component_versions(PyObject* self, PyObject* args) // icsneoG if (!tuple) { return NULL; } - for (int i = 0; i < length; ++i) { + for (uint64_t i = 0; i < length; ++i) { PyObject* obj = _getPythonModuleObject("ics.structures.version_report", "version_report"); if (!obj) { return set_ics_exception(exception_runtime_error(), "Failed to allocate version_report"); diff --git a/src/object_spy_message.cpp b/src/object_spy_message.cpp index da82097b9..267c95aa0 100644 --- a/src/object_spy_message.cpp +++ b/src/object_spy_message.cpp @@ -142,7 +142,7 @@ static int spy_message_object_setattr(PyObject* o, PyObject* name, PyObject* val if (!data && !PyLong_Check(data)) { obj->msg.AckBytes[i] = 0; } else { - obj->msg.AckBytes[i] = (unsigned char)PyLong_AsLong(data); + obj->msg.AckBytes[i] = static_cast(PyLong_AsLong(data)); } } return 0; @@ -163,8 +163,8 @@ static int spy_message_object_setattr(PyObject* o, PyObject* name, PyObject* val } else { ((spy_message_j1850_object*)obj)->msg.Header[i] = (unsigned char)PyLong_AsLong(data); } - obj->msg.NumberBytesHeader = static_cast(PyObject_Length(value)); } + obj->msg.NumberBytesHeader = static_cast(PyObject_Length(value)); return 0; } else if (PyUnicode_CompareWithASCIIString(name, "Protocol") == 0) { // Ethernet behavior is backward to CAN and will crash if enabled. @@ -181,7 +181,7 @@ static int spy_message_object_setattr(PyObject* o, PyObject* name, PyObject* val return -1; } // Get tuple items and place them in array, set as 0 if error. - size_t length = static_cast(PyObject_Length(value)); + size_t length = static_cast(PyObject_Length(value)); if (obj->msg.ExtraDataPtr != NULL) delete[] (unsigned char*)obj->msg.ExtraDataPtr; obj->msg.ExtraDataPtr = new unsigned char[length];