There is a potentially exploitable out of memory condition In Nanopb before 0.4.1 0.3.9.5 and 0.2.9.4. When nanopb is compiled with PB_ENABLE_MALLOC the message to be decoded contains a repeated string bytes or message field and realloc() runs out of memory when expanding the array nanopb can end up calling `free()` on a pointer value that comes from uninitialized memory. Depending on platform this can result in a crash or further memory corruption which may be exploitable in some cases. This problem is fixed in nanopb-0.4.1 nanopb-0.3.9.5 nanopb-0.2.9.4.