Webserver hängt sich aus

Wie muss ich den Code umschreiben, dass er nicht in fremde Datenbereiche schreibt?

Hier:

if (nCommandPos>-1) {
  sReturnCommand[nCommandPos++] = c;
}

... solltest du, nach jurs' Meinung, eine Bremse einbauen.
z.B.

if (nCommandPos>-1 && nCommandPos < 31) {
  sReturnCommand[nCommandPos++] = c;
}

Aber wenn der server nicht von einem x-beliebigen client mit zu großen Kommandos gequält werden kann, ist das halb so wild.
Falls 31 Zeichen sicher reichen.