Program: 105137
Project: 105137
Buggy source:
public VBD createVbd(final Connection conn,final DiskTO volume,final String vmName,final VM vm,final BootloaderType bootLoaderType,VDI vdi) throws XmlRpcException, XenAPIException {
  final Volume.Type type=volume.getType();
  if (vdi == null) {
    vdi=mount(conn,vmName,volume);
  }
  if (vdi != null) {
    if ("String_Node_Str".equals(vdi.getNameLabel(conn))) {
      vdi.setNameLabel(conn,vmName + "String_Node_Str");
    }
    final Map<String,String> smConfig=vdi.getSmConfig(conn);
    for (    final String key : smConfig.keySet()) {
      if (key.startsWith("String_Node_Str")) {
        vdi.removeFromSmConfig(conn,key);
        break;
      }
    }
  }
  final VBD.Record vbdr=new VBD.Record();
  vbdr.VM=vm;
  if (vdi != null) {
    vbdr.VDI=vdi;
  }
 else {
    vbdr.empty=true;
  }
  if (type == Volume.Type.ROOT && bootLoaderType == BootloaderType.PyGrub) {
    vbdr.bootable=true;
  }
 else   if (type == Volume.Type.ISO && bootLoaderType == BootloaderType.CD) {
    vbdr.bootable=true;
  }
  if (volume.getType() == Volume.Type.ISO) {
    vbdr.mode=Types.VbdMode.RO;
    vbdr.type=Types.VbdType.CD;
    vbdr.userdevice="String_Node_Str";
  }
 else {
    vbdr.mode=Types.VbdMode.RW;
    vbdr.type=Types.VbdType.DISK;
    vbdr.unpluggable=(volume.getType() == Volume.Type.ROOT) ? false : true;
    vbdr.userdevice="String_Node_Str";
    final Long deviceId=volume.getDiskSeq();
    if (deviceId != null && !isDeviceUsed(conn,vm,deviceId)) {
      vbdr.userdevice=deviceId.toString();
    }
  }
  final VBD vbd=VBD.create(conn,vbdr);
  if (s_logger.isDebugEnabled()) {
    s_logger.debug("String_Node_Str" + vbd.getUuid(conn) + "String_Node_Str"+ volume);
  }
  return vbd;
}

Fixed version (ground truth):
public VBD createVbd(final Connection conn,final DiskTO volume,final String vmName,final VM vm,final BootloaderType bootLoaderType,VDI vdi) throws XmlRpcException, XenAPIException {
  final Volume.Type type=volume.getType();
  if (vdi == null) {
    vdi=mount(conn,vmName,volume);
  }
  if (vdi != null) {
    if ("String_Node_Str".equals(vdi.getNameLabel(conn))) {
      vdi.setNameLabel(conn,vmName + "String_Node_Str");
    }
    final Map<String,String> smConfig=vdi.getSmConfig(conn);
    for (    final String key : smConfig.keySet()) {
      if (key.startsWith("String_Node_Str")) {
        vdi.removeFromSmConfig(conn,key);
        break;
      }
    }
  }
  final VBD.Record vbdr=new VBD.Record();
  vbdr.VM=vm;
  if (vdi != null) {
    vbdr.VDI=vdi;
  }
 else {
    vbdr.empty=true;
  }
  if (type == Volume.Type.ROOT && bootLoaderType == BootloaderType.PyGrub) {
    vbdr.bootable=true;
  }
 else   if (type == Volume.Type.ISO && bootLoaderType == BootloaderType.CD) {
    vbdr.bootable=true;
  }
  if (volume.getType() == Volume.Type.ISO) {
    vbdr.mode=Types.VbdMode.RO;
    vbdr.type=Types.VbdType.CD;
    vbdr.userdevice="String_Node_Str";
  }
 else {
    vbdr.mode=Types.VbdMode.RW;
    vbdr.type=Types.VbdType.DISK;
    vbdr.unpluggable=(volume.getType() == Volume.Type.ROOT) ? false : true;
    vbdr.userdevice="String_Node_Str";
    final Long deviceId=volume.getDiskSeq();
    if (deviceId != null && (!isDeviceUsed(conn,vm,deviceId) || deviceId > 3)) {
      vbdr.userdevice=deviceId.toString();
    }
  }
  final VBD vbd=VBD.create(conn,vbdr);
  if (s_logger.isDebugEnabled()) {
    s_logger.debug("String_Node_Str" + vbd.getUuid(conn) + "String_Node_Str"+ volume);
  }
  return vbd;
}