Finding the index of a symbol in unsigned char and extracting contents?

Looks like payload isn't null terminated.

Not quite sure how to add it to the end.

void callback(const char* topic, byte* payload, unsigned int length) {

  byte* nullTermPayload[16];

  for(int i = 0; i < length; i++){
    nullTermPayload[i] = payload[i];
  }
  nullTermPayload[length] = "\0";

};

gives

WemosD1MiniCloudMQTT.ino: In function 'void callback(const char*, byte*, unsigned int)':
WemosD1MiniCloudMQTT:102: error: invalid conversion from 'byte {aka unsigned char}' to 'byte* {aka unsigned char*}' [-fpermissive]
     nullTermPayload[i] = payload[i];
                                   ^
WemosD1MiniCloudMQTT:104: error: invalid conversion from 'const char*' to 'byte* {aka unsigned char*}' [-fpermissive]
   nullTermPayload[length] = "\0";
                           ^
exit status 1

And this

void callback(const char* topic, byte* payload, unsigned int length) {

  char nullTermPayload[16];

  for(int i = 0; i < length; i++){
    nullTermPayload[i] = payload[i];
  }
  nullTermPayload[length] = "\0";

};
In function 'void callback(const char*, byte*, unsigned int)':
WemosD1MiniCloudMQTT:104: error: invalid conversion from 'const char*' to 'char' [-fpermissive]
   nullTermPayload[length] = "\0";
                           ^
exit status 1
invalid conversion from 'const char*' to 'char' [-fpermissive]