if called with size 0, realloc frees the buffer, which may eventually lead to a double free corruption.
- don't predefine any limits on the transceive size - fixes out of bounds access