function formcheck_Timetable_course_F3(this_DET) {
  var this_button_id = this_DET.id;

  var frmvalidator = new Validator("F3", this_button_id);

  var course_id = document.getElementById("course_id_div").value;
  if (course_id == "new") {
    frmvalidator.addValidation(
      "tables[courses][new][TITLE]",
      "req",
      "Please enter the course title "
    );
    frmvalidator.addValidation(
      "tables[courses][new][TITLE]",
      "maxlen=50",
      "Max length for course title is 50 characters "
    );

    frmvalidator.addValidation(
      "tables[courses][new][SHORT_NAME]",
      "maxlen=25",
      "Max length for short name is 25 characters "
    );
  } else {
    frmvalidator.addValidation(
      "inputtables[courses][" + course_id + "][TITLE]",
      "req",
      "Please enter the course title "
    );
    frmvalidator.addValidation(
      "inputtables[courses][" + course_id + "][TITLE]",
      "maxlen=50",
      "Max length for course title is 50 characters"
    );

    frmvalidator.addValidation(
      "inputtables[courses][" + course_id + "][SHORT_NAME]",
      "maxlen=25",
      "Max length for short name is 25 characters"
    );
  }
}
The software uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the software does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.