Package com.denimgroup.threadfix.data.entities

Examples of com.denimgroup.threadfix.data.entities.Finding


        finding.getVulnerability() == null || vuln == null)) {
      // it's ok - we don't need to update any mappings / dates / etc.
      return;
    }
   
    Finding earliestFinding = null;
   
    // High water mark algorithm for finding earliest finding
    for (Finding vulnFinding : vuln.getFindings()) {
      if (vulnFinding != null && vulnFinding.getScan() != null
          && (earliestFinding == null ||
              earliestFinding.getScan().getImportTime()
              .after(vulnFinding.getScan().getImportTime()))) {
        earliestFinding = vulnFinding;
      }
    }
   
    if (earliestFinding != null) {
      earliestFinding.getVulnerability().setSurfaceLocation(
          earliestFinding.getSurfaceLocation());
      earliestFinding.setFirstFindingForVuln(true);
      findingDao.saveOrUpdate(earliestFinding);
      vulnerabilityDao.saveOrUpdate(earliestFinding.getVulnerability());
   
      if (finding != null && !earliestFinding.getId().equals(finding.getId())) {
        // set it to be the first finding
        finding.setFirstFindingForVuln(false);
        findingDao.saveOrUpdate(finding);
      }
     
      log.debug("Updating new / old vuln stats for the Scan with ID " +
          earliestFinding.getScan().getId());
     
      earliestFinding.getScan().setNumberNewVulnerabilities(
          earliestFinding.getScan().getNumberNewVulnerabilities() + 1);
      earliestFinding.getScan().setNumberOldVulnerabilities(
          earliestFinding.getScan().getNumberOldVulnerabilities() - 1);
      scanDao.saveOrUpdate(earliestFinding.getScan());
     
      vuln.setOpenTime(earliestFinding.getScan().getImportTime());
    }
   
  } 
View Full Code Here


      findingsToRemove.clear();
 
      // Remove any findings from the scan being deleted and
      // update the first finding for reporting purposes
      boolean changeFirstFinding = false;
      Finding newFirstFinding = null;
      Calendar earliestTime = null;
      for (Finding finding : vuln.getFindings()) {
        if (finding == null || finding.getScan() == null
            || finding.getScan().getId() == null) {
          continue;
        }
       
        if (newFirstFinding == null || earliestTime == null ||
            (finding.getScan().getImportTime() != null
             && finding.getScan().getImportTime().before(earliestTime))) {
          newFirstFinding = finding;
          earliestTime = finding.getScan().getImportTime();
        }
       
        if (finding.getScan().getId().equals(scan.getId())) {
          finding.setVulnerability(null);
          findingsToRemove.add(finding);
          if (finding.isFirstFindingForVuln()) {
            changeFirstFinding = true;
          }
        }
      }
     
      // Should avoid any problems related to removing items from a collection
      // while iterating through it.
      vuln.getFindings().removeAll(findingsToRemove);
     
      if (changeFirstFinding && newFirstFinding != null) {
        if (newFirstFinding.getVulnerability() != null) {
          newFirstFinding.getVulnerability().setSurfaceLocation(
            newFirstFinding.getSurfaceLocation());
        }
   
        newFirstFinding.setFirstFindingForVuln(true);
        log.debug("Updating number new vulnerabilities for Scan with ID " +
            newFirstFinding.getScan().getId());
        newFirstFinding.getScan().setNumberNewVulnerabilities(
            newFirstFinding.getScan().getNumberNewVulnerabilities() + 1);
       
        vuln.setOpenTime(newFirstFinding.getScan().getImportTime());
      }
 
      // now if the vuln has no findings, delete it
      if (vuln.getFindings().size() == 0) {
        vulnsToRemove.add(vuln);
View Full Code Here

   
    if (!PermissionUtils.isAuthorized(Permission.READ_ACCESS, orgId, appId)) {
      return new ModelAndView("403");
    }
   
    Finding finding = findingService.loadFinding(findingId);
    if (finding == null){
      log.warn(ResourceNotFoundException.getLogMessage("Finding", findingId));
      throw new ResourceNotFoundException();
        }
View Full Code Here

        if (!PermissionUtils.isAuthorized(Permission.CAN_MODIFY_VULNERABILITIES, orgId, appId)) {
            return "403";
        }

        Finding finding = findingService.loadFinding(findingId);

    if (finding != null && finding.getVulnerability() != null) {
      Vulnerability vuln = vulnerabilityService.loadVulnerability(finding.getVulnerability()
          .getId());
      List<Vulnerability> similarVulns = vulnerabilityService
          .loadSimilarVulnerabilities(vuln);
      similarVulns.remove(vuln);
      List<Vulnerability> sameGenericVulns = vulnerabilityService
View Full Code Here

    if (vulnerabilityId == null) {
      model.addAttribute("errorMessage", "No Vulnerability was selected. Please select one and try again.");
      return merge(findingId, model, orgId, appId);
    }
   
    Finding finding = findingService.loadFinding(findingId);
    Integer id = null;
   
    try {
      id = Integer.parseInt(vulnerabilityId);
    } catch (NumberFormatException e) {
      log.info("Bad vulnerabilityId provided '" + vulnerabilityId + "'. Should have been an integer");
      return merge(findingId, model, orgId, appId);
    }
   
    Vulnerability vulnerability = vulnerabilityService.loadVulnerability(id);
   
    if (finding != null && vulnerability != null) {
     
      if (finding.getVulnerability() != null &&
          finding.getVulnerability().getFindings().size() == 1) {
        finding.getVulnerability().closeVulnerability(null, Calendar.getInstance());
        vulnerabilityService.storeVulnerability(finding.getVulnerability());
      }
     
      finding.setVulnerability(vulnerability);
      findingService.storeFinding(finding);
    }
     
    return "redirect:/organizations/" + orgId + "/applications/" + appId + "/vulnerabilities/" + vulnerabilityId;
  }
View Full Code Here

     
      scan.setNumberNewVulnerabilities(scan
          .getNumberNewVulnerabilities() - 1);
      scan.setNumberOldVulnerabilities(scan
          .getNumberOldVulnerabilities() + 1);
      Finding previousFinding = vuln.getOriginalFinding();

      // Update records for the vuln origin
      if (previousFinding != null
          && previousFinding.getScan() != null
          && previousFinding.getScan()
              .getApplicationChannel() != null
          && scan.getApplicationChannel()
              .getId()
              .equals(previousFinding.getScan()
                  .getApplicationChannel()
                  .getId())) {
        // must be older
        scan.setNumberOldVulnerabilitiesInitiallyFromThisChannel(scan
            .getNumberOldVulnerabilitiesInitiallyFromThisChannel() + 1);
      } else if (previousFinding != null
          && previousFinding.getScan()
              .getImportTime()
              .after(scan.getImportTime())) {
        // replace as oldest finding for vuln
        // first, switch the flags. Then update new /
        // old counts on both scans.
View Full Code Here

    String checkResult = findingService.checkRequestForFindingParameters(request);
    if (!checkResult.equals(PASSED_CHECK)) {
            return failure(checkResult);
        }
   
    Finding finding = findingService.parseFindingFromRequest(request);
    boolean mergeResult = manualFindingService.processManualFinding(finding, appId);
   
    if (mergeResult) {
      return writeSuccessObjectWithView(finding, AllViews.RestView2_1.class);
    } else {
View Full Code Here

                    Permission.CAN_GENERATE_REPORTS,
                    Permission.CAN_MANAGE_DEFECT_TRACKERS,
                    Permission.CAN_MANAGE_USERS);

            model.addAttribute("application", application);
            model.addAttribute("finding", new Finding());
            model.addAttribute("applicationTypes", FrameworkType.values());
            model.addAttribute("contentPage", "applications/detailHeader.jsp");
            ControllerUtils.addSuccessMessage(request,
                    "The application was edited successfully.");
View Full Code Here

                findingMap.put(FindingKey.RESPONSE, currentResponse);
                findingMap.put(FindingKey.DETAIL, currentScannerDetail);
                findingMap.put(FindingKey.RECOMMENDATION, currentScannerRecommendation);
                findingMap.put(FindingKey.RAWFINDING, currentRawFinding.toString());

                Finding finding = constructFinding(findingMap);
          add(finding);
         
          currentChannelVulnCode = null;
          currentSeverityCode    = null;
          currentParameter       = null;
View Full Code Here

                    findingMap.put(FindingKey.RESPONSE, currentResponse);
                    findingMap.put(FindingKey.DETAIL, currentScannerDetail);
                    findingMap.put(FindingKey.RECOMMENDATION, currentScannerRecommendation);
                    findingMap.put(FindingKey.RAWFINDING, currentRawFinding.toString());

                    Finding finding = constructFinding(findingMap);
                    add(finding);

                    add(finding);
                }
View Full Code Here

TOP

Related Classes of com.denimgroup.threadfix.data.entities.Finding

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.