# HG changeset patch # User etisserant # Date 1216214464 -7200 # Node ID b2d6307a89fa84a1bb285787675ba58a6c4e0de3 # Parent aa36efce6e78739fca489ee2af23249afe21a9ef Changed getReadResultNetworkDict behaviour about size. Do not copy more data than pointet by Size arg. diff -r aa36efce6e78 -r b2d6307a89fa src/sdo.c --- a/src/sdo.c Tue Jul 08 15:14:48 2008 +0200 +++ b/src/sdo.c Wed Jul 16 15:21:04 2008 +0200 @@ -1509,15 +1509,15 @@ } /*! -** -** -** @param d -** @param nodeId -** @param data -** @param size -** @param abortCode -** -** @return +** +** +** @param d +** @param nodeId +** @param data +** @param size pointer to expected size, changed into returned size. Expected size will be truncated to transfered data size +** @param abortCode +** +** @return **/ UNS8 getReadResultNetworkDict (CO_Data* d, UNS8 nodeId, void* data, UNS8 *size, UNS32 * abortCode) @@ -1537,7 +1537,9 @@ return d->transfers[line].state; /* Transfert is finished. Put the value in the data. */ - * size = (UNS8)d->transfers[line].count; + /* use transfers[line].count as max size */ + if( (UNS8)d->transfers[line].count < *size ) + *size = (UNS8)d->transfers[line].count; for ( i = 0 ; i < *size ; i++) { # ifdef CANOPEN_BIG_ENDIAN if (d->transfers[line].dataType != visible_string)