Weird behavior with char/uint8 arrays
Your memcpy is backwards.

SYNOPSIS
   #include &lt;string.h&gt;

   void *memcpy(void *dest, const void *src, size_t n);


So the line:

memcpy(data, dataTerminated, NUM_MFR_BYTES); //Copy the bytes into the new array


should be:

memcpy(dataTerminated, data, NUM_MFR_BYTES); //Copy the bytes into the new array