Program: 71339
Project: 71339
Buggy source:
/** 
 * validate whether the parameter value is a valid value for the parameter
 * @param p the parameter to be verified
 * @param paramValue the value for the parameter
 * @return true if the given parameter value is valid; false otherwise
 */
private boolean validateScalarParameter(ScalarParameterHandle paramHandle) throws ParameterValidationException {
  String paramName=paramHandle.getName();
  Object paramValue=runValues.get(paramName);
  String type=paramHandle.getDataType();
  if (paramValue == null) {
    if (!paramHandle.isRequired())     return true;
    throw new ParameterValidationException(MessageConstants.PARAMETER_IS_NULL_EXCEPTION,new String[]{paramName});
  }
  String source=paramHandle.getValidate();
  if (source != null && source.length() != 0) {
    try {
      Object result=executionContext.evaluate(source);
      if (!(result instanceof Boolean) || !((Boolean)result).booleanValue()) {
        throw new ParameterValidationException(MessageConstants.PARAMETER_SCRIPT_VALIDATION_EXCEPTION,new String[]{paramName});
      }
    }
 catch (    ParameterValidationException pve) {
      throw pve;
    }
catch (    BirtException ex) {
      throw new ParameterValidationException(ex);
    }
  }
  String paramType=paramHandle.getParamType();
  if (DesignChoiceConstants.SCALAR_PARAM_TYPE_MULTI_VALUE.equals(paramType)) {
    if (paramValue instanceof Object[]) {
      boolean isValid=true;
      Object[] paramValueList=(Object[])paramValue;
      for (int i=0; i < paramValueList.length; i++) {
        if (paramValueList[i] != null) {
          if (!validateParameterValueType(paramName,paramValueList[i],type,paramHandle)) {
            isValid=false;
          }
        }
      }
      return isValid;
    }
    throw new ParameterValidationException(MessageConstants.PARAMETER_TYPE_IS_INVALID_EXCEPTION,new String[]{paramName,"String_Node_Str",paramValue.getClass().getName()});
  }
 else {
    return validateParameterValueType(paramName,paramValue,type,paramHandle);
  }
}

Fixed version (ground truth):
/** 
 * validate whether the parameter value is a valid value for the parameter
 * @param p the parameter to be verified
 * @param paramValue the value for the parameter
 * @return true if the given parameter value is valid; false otherwise
 */
private boolean validateScalarParameter(ScalarParameterHandle paramHandle) throws ParameterValidationException {
  String paramName=paramHandle.getName();
  Object paramValue=runValues.get(paramName);
  String type=paramHandle.getDataType();
  if (paramValue == null) {
    if (!paramHandle.isRequired())     return true;
    throw new ParameterValidationException(MessageConstants.PARAMETER_IS_NULL_EXCEPTION,new String[]{paramName});
  }
  String source=paramHandle.getValidate();
  if (source != null && source.length() != 0) {
    try {
      Object result=executionContext.evaluate(source);
      if (!(result instanceof Boolean) || !((Boolean)result).booleanValue()) {
        throw new ParameterValidationException(MessageConstants.PARAMETER_VALIDATION_SCRIPT_RESULT_ERROR,new String[]{paramName});
      }
    }
 catch (    ParameterValidationException pve) {
      throw pve;
    }
catch (    BirtException ex) {
      throw new ParameterValidationException(ex);
    }
  }
  String paramType=paramHandle.getParamType();
  if (DesignChoiceConstants.SCALAR_PARAM_TYPE_MULTI_VALUE.equals(paramType)) {
    if (paramValue instanceof Object[]) {
      boolean isValid=true;
      Object[] paramValueList=(Object[])paramValue;
      for (int i=0; i < paramValueList.length; i++) {
        if (paramValueList[i] != null) {
          if (!validateParameterValueType(paramName,paramValueList[i],type,paramHandle)) {
            isValid=false;
          }
        }
      }
      return isValid;
    }
    throw new ParameterValidationException(MessageConstants.PARAMETER_TYPE_IS_INVALID_EXCEPTION,new String[]{paramName,"String_Node_Str",paramValue.getClass().getName()});
  }
 else {
    return validateParameterValueType(paramName,paramValue,type,paramHandle);
  }
}