Serial.print schneidet letztes Zeichen ab.

Und bei all dem hast du noch nichts von call by reference gehört?

Besser:

void ExecCmd(String& CmdStr)
{
}

Wird zwar mit dem Problem direkt nichts zu tun haben, wenn du das ständig machst wird nur Speicher und Zeit verschwendet.

Es stimmt aber halt, dass man so nicht sagen kann woran das liegt. Klar ist es schwer sich durch Tausende Zeilen fremden Code zu wühlen, aber das bisschen lässt keine klare Aussage treffen