Arduino-SerialCommand icon indicating copy to clipboard operation
Arduino-SerialCommand copied to clipboard

Use of realloc may cause data corruption

Open cversek opened this issue 12 years ago • 0 comments

I've been tracing a problem with the command strings frequently being corrupted after using addCommand several times. I believe that the following line in SerialCommand.cpp is a bug:

   commandList = (SerialCommandCallback *) realloc(commandList, (commandCount + 1) * sizeof(SerialCommandCallback));

The C++ reference on realloc states the following:

The content of the memory block is preserved up to the lesser of the new and old sizes, even if the block is moved to a new location. If the new size is larger, the value of the newly allocated portion is indeterminate.

A simple but inelegant fix would be to hard-code the size of commandList in the header file and limit the maximum number of commands.

Perhaps a more flexible dynamic allocation approach could follow from a linked-list implementation.

cversek avatar Aug 27 '13 08:08 cversek