diff options
Diffstat (limited to 'low-can-binding/utils')
-rw-r--r-- | low-can-binding/utils/openxc-utils.cpp | 5 | ||||
-rw-r--r-- | low-can-binding/utils/socketcan-bcm.cpp | 12 |
2 files changed, 14 insertions, 3 deletions
diff --git a/low-can-binding/utils/openxc-utils.cpp b/low-can-binding/utils/openxc-utils.cpp index e454121b..c06beabb 100644 --- a/low-can-binding/utils/openxc-utils.cpp +++ b/low-can-binding/utils/openxc-utils.cpp @@ -34,6 +34,7 @@ const openxc_VehicleMessage build_VehicleMessage(active_diagnostic_request_t* request, const DiagnosticResponse& response, float parsed_value) { openxc_VehicleMessage message; + ::memset(&message, 0, sizeof(message)); application_t& app = application_t::instance(); message.has_type = true; @@ -98,6 +99,7 @@ const openxc_VehicleMessage build_VehicleMessage(active_diagnostic_request_t* re const openxc_VehicleMessage build_VehicleMessage(const openxc_SimpleMessage& message, uint64_t timestamp) { openxc_VehicleMessage v; + ::memset(&v, 0, sizeof(v)); v.has_type = true, v.type = openxc_VehicleMessage_Type::openxc_VehicleMessage_Type_SIMPLE; @@ -120,6 +122,7 @@ const openxc_VehicleMessage build_VehicleMessage(const openxc_SimpleMessage& mes const openxc_VehicleMessage build_VehicleMessage(const openxc_SimpleMessage& message) { openxc_VehicleMessage v; + ::memset(&v, 0, sizeof(v)); v.has_type = true, v.type = openxc_VehicleMessage_Type::openxc_VehicleMessage_Type_SIMPLE; @@ -141,7 +144,7 @@ openxc_VehicleMessage build_VehicleMessage() { openxc_VehicleMessage v; - ::memset(&v, 0, sizeof(openxc_VehicleMessage)); + ::memset(&v, 0, sizeof(v)); return v; } diff --git a/low-can-binding/utils/socketcan-bcm.cpp b/low-can-binding/utils/socketcan-bcm.cpp index d1fd8e0a..3f3a0968 100644 --- a/low-can-binding/utils/socketcan-bcm.cpp +++ b/low-can-binding/utils/socketcan-bcm.cpp @@ -74,14 +74,22 @@ namespace utils { struct utils::bcm_msg msg; - ::memset(&msg, 0, sizeof(msg)); const struct sockaddr_can& addr = s.get_tx_address(); socklen_t addrlen = sizeof(addr); struct ifreq ifr; ssize_t nbytes = ::recvfrom(s.socket(), &msg, sizeof(msg), 0, (struct sockaddr*)&addr, &addrlen); + if(nbytes < 0) + { + AFB_ERROR("Can't read the next message from socket '%d'. '%s'", s.socket(), strerror(errno)); + return s; + } ifr.ifr_ifindex = addr.can_ifindex; - ioctl(s.socket(), SIOCGIFNAME, &ifr); + if(ioctl(s.socket(), SIOCGIFNAME, &ifr) < 0) + { + AFB_ERROR("Can't read the interface name. '%s'", strerror(errno)); + return s; + } long unsigned int frame_size = nbytes-sizeof(struct bcm_msg_head); AFB_DEBUG("Data available: %li bytes read. BCM head, opcode: %i, can_id: %i, nframes: %i", frame_size, msg.msg_head.opcode, msg.msg_head.can_id, msg.msg_head.nframes); |