patch from Stefan Kratochwil <entwicklung@inovel.de> : canfestival-3-fm3_698.patch
Bug:
If an object dictionary entry was requested whose size exceeds
SDO_MAX_LENGTH_TRANSFERT, the memcpy() call at line 139 of objacces.c overwrites
the memory after *pDestData which causes stack corruption.
-> Bugfix:
The bug was corrected by size checking the requested data. An 'Out of
memory' error message will be generated if the requested data exceeds
SDO_MAX_LENGTH_TRANSFERT.
Additional changes:
Added dynamic buffer allocation for the SDO transfer. This feature can be used
if SDO_DYNAMIC_BUFFER_ALLOCATION is defined in config.h. The size of the
dynamically allocated buffer is controlled with
SDO_DYNAMIC_BUFFER_ALLOCATION_SIZE.
-> Note:
This change removes the detection of OD_LENGTH_DATA_INVALID errors!
Kvaser driver for CANfestival, the open source CANopen stack.
(C)2008 Giuseppe Massimo Bertani
This driver should work with any Kvaser product compatible with Kvaser's CANLIB4.
I tested it with CAN Leaf Professional (USB-CAN adapter) on a Suse10.1 Linux box
and CANLIB 4.72 Beta (Oct 1,2007).
In order to compile the driver, you should already be able to run the CANlib examples,
and tools, to be sure that CANLIB is able to detect and drive your device.
-------------------------------------------------------------------------------------------------
NOTES ABOUT CANLIB4
Since the "Leaf" device was added recently to CANLIB, I had to download the latest linuxcan4
library sources from http://www.kvaser.com instead of use the CD software shipped with the device.
--------------------------------------------------------------------------------------------------
NOTES ABOUT WINDOWS
Sadly, Kvaser's Win32 CANLIB is not provided with sources, so CANLIB cannot be build with GNU
tools. LIB files for MSVC and BCC are provided with the DLL but the DLL itself is stripped and
I've tried an entire day to compile this driver under Cygwin without success, despite
Wu Yongwei's hints (http://www.geocities.com/yongweiwu/dllfaq.htm).
This does not mean that it's an impossible task, but probably I left out something important.
Temporary KO.
-------------------------------------------------------------------------------------------------
GMB 23/1/08