Program: 5545
Project: 5545
Buggy source:
private void handleCmd(String cmd,int[] cmdBytes,int cmdLen) throws IOException, EmulationException {
  System.out.println("String_Node_Str" + cmd);
  char c=cmd.charAt(0);
switch (c) {
case 'H':
    sendResponse(OK);
  break;
case 'q':
if ("String_Node_Str".equals(cmd)) {
  sendResponse("String_Node_Str");
}
 else if ("String_Node_Str".equals(cmd)) {
  sendResponse("String_Node_Str");
}
 else if ("String_Node_Str".equals(cmd)) {
  sendResponse("String_Node_Str");
}
 else if ("String_Node_Str".equals(cmd)) {
  sendResponse("String_Node_Str");
}
 else if ("String_Node_Str".equals(cmd)) {
  sendResponse(OK);
}
 else {
  System.out.println("String_Node_Str");
  sendResponse("String_Node_Str");
}
break;
case '?':
sendResponse("String_Node_Str");
break;
case 'g':
readRegisters();
break;
case 'k':
sendResponse(OK);
break;
case 'm':
case 'M':
case 'X':
String cmd2=cmd.substring(1);
String wdata[]=cmd2.split("String_Node_Str");
int cPos=cmd.indexOf(':');
if (cPos > 0) {
cmd2=wdata[0];
}
String parts[]=cmd2.split("String_Node_Str");
int addr=Integer.decode("String_Node_Str" + parts[0]);
int len=Integer.decode("String_Node_Str" + parts[1]);
String data="String_Node_Str";
if (c == 'm') {
System.out.println("String_Node_Str" + addr + "String_Node_Str"+ len);
for (int i=0; i < len; i++) {
data+=Utils.hex8(cpu.memory[addr++] & 0xff);
}
sendResponse(data);
}
 else {
System.out.println("String_Node_Str" + addr + "String_Node_Str"+ len+ "String_Node_Str"+ ((wdata.length > 1) ? wdata[1] : "String_Node_Str"));
cPos++;
for (int i=0; i < len; i++) {
System.out.println("String_Node_Str" + cmdBytes[cPos] + "String_Node_Str"+ addr+ "String_Node_Str"+ cPos);
cpu.write(addr++,cmdBytes[cPos++],false);
}
sendResponse(OK);
}
break;
case 'C':
sendResponse("String_Node_Str");
break;
default :
System.out.println("String_Node_Str");
sendResponse("String_Node_Str");
}
}

Fixed version (ground truth):
private void handleCmd(String cmd,int[] cmdBytes,int cmdLen) throws IOException, EmulationException {
  System.out.println("String_Node_Str" + cmd);
  char c=cmd.charAt(0);
switch (c) {
case 'H':
    sendResponse(OK);
  break;
case 'q':
if ("String_Node_Str".equals(cmd)) {
  sendResponse("String_Node_Str");
}
 else if ("String_Node_Str".equals(cmd)) {
  sendResponse("String_Node_Str");
}
 else if ("String_Node_Str".equals(cmd)) {
  sendResponse("String_Node_Str");
}
 else if ("String_Node_Str".equals(cmd)) {
  sendResponse("String_Node_Str");
}
 else if ("String_Node_Str".equals(cmd)) {
  sendResponse(OK);
}
 else {
  System.out.println("String_Node_Str");
  sendResponse("String_Node_Str");
}
break;
case '?':
sendResponse("String_Node_Str");
break;
case 'g':
readRegisters();
break;
case 'k':
sendResponse(OK);
break;
case 'm':
case 'M':
case 'X':
String cmd2=cmd.substring(1);
String wdata[]=cmd2.split("String_Node_Str");
int cPos=cmd.indexOf(':');
if (cPos > 0) {
cmd2=wdata[0];
}
String parts[]=cmd2.split("String_Node_Str");
int addr=Integer.decode("String_Node_Str" + parts[0]);
int len=Integer.decode("String_Node_Str" + parts[1]);
String data="String_Node_Str";
if (c == 'm') {
System.out.println("String_Node_Str" + addr + "String_Node_Str"+ len);
for (int i=0; i < len; i++) {
data+=Utils.hex8(cpu.memory[addr++] & 0xff);
}
sendResponse(data);
}
 else {
System.out.println("String_Node_Str" + addr + "String_Node_Str"+ len+ "String_Node_Str"+ ((wdata.length > 1) ? wdata[1] : "String_Node_Str"));
cPos++;
for (int i=0; i < len; i++) {
System.out.println("String_Node_Str" + cmdBytes[cPos] + "String_Node_Str"+ addr+ "String_Node_Str"+ cPos);
cpu.write(addr++,cmdBytes[cPos++],MSP430Constants.MODE_BYTE);
}
sendResponse(OK);
}
break;
case 'C':
sendResponse("String_Node_Str");
break;
default :
System.out.println("String_Node_Str");
sendResponse("String_Node_Str");
}
}