Program: 156167
Project: 156167
Buggy source:
@Override protected Object decode(Channel channel,SocketAddress remoteAddress,Object msg) throws Exception {
  HttpRequest request=(HttpRequest)msg;
  QueryStringDecoder decoder=new QueryStringDecoder(request.getUri());
  Map<String,List<String>> params=decoder.getParameters();
  if (params.isEmpty()) {
    decoder=new QueryStringDecoder(request.getContent().toString(Charset.defaultCharset()),false);
    params=decoder.getParameters();
  }
  Position position=new Position();
  position.setProtocol(getProtocolName());
  String id=params.get(params.containsKey("String_Node_Str") ? "String_Node_Str" : "String_Node_Str").get(0);
  if (!identify(id,channel)) {
    return null;
  }
  position.setDeviceId(getDeviceId());
  position.setValid(true);
  if (params.containsKey("String_Node_Str")) {
    try {
      long timestamp=Long.parseLong(params.get("String_Node_Str").get(0));
      if (timestamp < Integer.MAX_VALUE) {
        timestamp*=1000;
      }
      position.setTime(new Date(timestamp));
    }
 catch (    NumberFormatException error) {
      DateFormat dateFormat=new SimpleDateFormat("String_Node_Str");
      position.setTime(dateFormat.parse(params.get("String_Node_Str").get(0)));
    }
  }
 else {
    position.setTime(new Date());
  }
  position.setLatitude(Double.parseDouble(params.get("String_Node_Str").get(0)));
  position.setLongitude(Double.parseDouble(params.get("String_Node_Str").get(0)));
  if (params.containsKey("String_Node_Str")) {
    position.setSpeed(Double.parseDouble(params.get("String_Node_Str").get(0)));
  }
  if (params.containsKey("String_Node_Str")) {
    position.setCourse(Double.parseDouble(params.get("String_Node_Str").get(0)));
  }
 else   if (params.containsKey("String_Node_Str")) {
    position.setCourse(Double.parseDouble(params.get("String_Node_Str").get(0)));
  }
  if (params.containsKey("String_Node_Str")) {
    position.setAltitude(Double.parseDouble(params.get("String_Node_Str").get(0)));
  }
  if (params.containsKey("String_Node_Str")) {
    position.set(Event.KEY_HDOP,params.get("String_Node_Str").get(0));
  }
  if (params.containsKey("String_Node_Str")) {
    position.set("String_Node_Str",params.get("String_Node_Str").get(0));
  }
  if (params.containsKey("String_Node_Str")) {
    position.set("String_Node_Str",params.get("String_Node_Str").get(0));
  }
  if (params.containsKey("String_Node_Str")) {
    position.set(Event.KEY_BATTERY,params.get("String_Node_Str").get(0));
  }
  if (params.containsKey("String_Node_Str")) {
    position.set("String_Node_Str",params.get("String_Node_Str").get(0));
  }
  if (channel != null) {
    HttpResponse response=new DefaultHttpResponse(HttpVersion.HTTP_1_1,HttpResponseStatus.OK);
    channel.write(response).addListener(ChannelFutureListener.CLOSE);
  }
  return position;
}

Fixed version (ground truth):
@Override protected Object decode(Channel channel,SocketAddress remoteAddress,Object msg) throws Exception {
  HttpRequest request=(HttpRequest)msg;
  QueryStringDecoder decoder=new QueryStringDecoder(request.getUri());
  Map<String,List<String>> params=decoder.getParameters();
  if (params.isEmpty()) {
    decoder=new QueryStringDecoder(request.getContent().toString(Charset.defaultCharset()),false);
    params=decoder.getParameters();
  }
  Position position=new Position();
  position.setProtocol(getProtocolName());
  String id;
  if (params.containsKey("String_Node_Str")) {
    id=params.get("String_Node_Str").get(0);
  }
 else {
    id=params.get("String_Node_Str").get(0);
  }
  if (!identify(id,channel)) {
    return null;
  }
  position.setDeviceId(getDeviceId());
  position.setValid(true);
  if (params.containsKey("String_Node_Str")) {
    try {
      long timestamp=Long.parseLong(params.get("String_Node_Str").get(0));
      if (timestamp < Integer.MAX_VALUE) {
        timestamp*=1000;
      }
      position.setTime(new Date(timestamp));
    }
 catch (    NumberFormatException error) {
      DateFormat dateFormat=new SimpleDateFormat("String_Node_Str");
      position.setTime(dateFormat.parse(params.get("String_Node_Str").get(0)));
    }
  }
 else {
    position.setTime(new Date());
  }
  position.setLatitude(Double.parseDouble(params.get("String_Node_Str").get(0)));
  position.setLongitude(Double.parseDouble(params.get("String_Node_Str").get(0)));
  if (params.containsKey("String_Node_Str")) {
    position.setSpeed(Double.parseDouble(params.get("String_Node_Str").get(0)));
  }
  if (params.containsKey("String_Node_Str")) {
    position.setCourse(Double.parseDouble(params.get("String_Node_Str").get(0)));
  }
 else   if (params.containsKey("String_Node_Str")) {
    position.setCourse(Double.parseDouble(params.get("String_Node_Str").get(0)));
  }
  if (params.containsKey("String_Node_Str")) {
    position.setAltitude(Double.parseDouble(params.get("String_Node_Str").get(0)));
  }
  if (params.containsKey("String_Node_Str")) {
    position.set(Event.KEY_HDOP,params.get("String_Node_Str").get(0));
  }
  if (params.containsKey("String_Node_Str")) {
    position.set("String_Node_Str",params.get("String_Node_Str").get(0));
  }
  if (params.containsKey("String_Node_Str")) {
    position.set("String_Node_Str",params.get("String_Node_Str").get(0));
  }
  if (params.containsKey("String_Node_Str")) {
    position.set(Event.KEY_BATTERY,params.get("String_Node_Str").get(0));
  }
  if (params.containsKey("String_Node_Str")) {
    position.set("String_Node_Str",params.get("String_Node_Str").get(0));
  }
  if (channel != null) {
    HttpResponse response=new DefaultHttpResponse(HttpVersion.HTTP_1_1,HttpResponseStatus.OK);
    channel.write(response).addListener(ChannelFutureListener.CLOSE);
  }
  return position;
}