public static O2TraceBlock_OunceV6 getTraceBlockToGlueFinding(AssessmentAssessmentFileFinding fFinding,
                                                                      TraceType ttTraceType,
                                                                      O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6,
                                                                      Dictionary <String, O2TraceBlock_OunceV6> dO2TraceBlock)
        {
            CallInvocation ciCallInvocation =
                AnalysisSearch.findTraceTypeInSmartTrace_Recursive_returnCallInvocation(fFinding.Trace, ttTraceType);

            if (ciCallInvocation == null)
            {
                return(null);
            }
            String sSourceSignature = OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.sig_id, oadO2AssessmentDataOunceV6);
            String sFile            = OzasmtUtils_OunceV6.getFileIndexValue(ciCallInvocation.fn_id, oadO2AssessmentDataOunceV6);
            String sLineNumber      = ciCallInvocation.line_number.ToString();
            String sTraceRootText   = OzasmtUtils_OunceV6.getStringIndexValue(fFinding.Trace[0].sig_id, oadO2AssessmentDataOunceV6);
            String sUniqueName      = String.Format("{0}      {1}      {2}", sSourceSignature, sFile, sLineNumber);

            // need to find a better way to clue the final sinks since at the moment I am getting a couple sinks trown by the cases when a sink also become a source of tainted data
            //String sUniqueName = String.Format("{0} {1} {2} {3}", sSourceSignature, sFile, sLineNumber, sTraceRootText);

            if (false == dO2TraceBlock.ContainsKey(sUniqueName))
            {
                dO2TraceBlock.Add(sUniqueName, new O2TraceBlock_OunceV6());
                dO2TraceBlock[sUniqueName].sSignature     = sSourceSignature;
                dO2TraceBlock[sUniqueName].sFile          = sFile;
                dO2TraceBlock[sUniqueName].sLineNumber    = sLineNumber;
                dO2TraceBlock[sUniqueName].sTraceRootText = sTraceRootText;
                dO2TraceBlock[sUniqueName].sUniqueName    = sUniqueName;
            }
            return(dO2TraceBlock[sUniqueName]);
        }
 public void addTreeNodeToComboxWithNodesToPlot(TreeNode tnTreeNodeToAdd,
                                                AssessmentAssessmentFileFinding fFinding,
                                                O2AssessmentData_OunceV6 fadAssessmentDataOunceV6)
 {
     try
     {
         if (false == cbGLEE_MultiNodes.Checked)
         {
             tvGLEE_NodesToGraph.Nodes.Clear();
         }
         foreach (TreeNode tnTreeNode in tvGLEE_NodesToGraph.Nodes)
         {
             if (tnTreeNode.Tag == tnTreeNodeToAdd.Tag)
             {
                 DI.log.debug("Trace was already in list of nodes to graph");
                 return;
             }
         }
         //lfFindingsToGraph.Add(fFinding);
         tvGLEE_NodesToGraph.Nodes.Add((TreeNode)tnTreeNodeToAdd.Clone());
         //     loadSmartTraceGraphInGleeViewer(fadO2AssessmentData);
     }
     catch (Exception ex)
     {
         DI.log.ex(ex, "in addTreeNodeToComboxWithNodesToPlot");
     }
 }
        public static List <String> getListOf_TraceSignatures_ByTraceType(String sPathToSavedXmlFile,
                                                                          TraceType ttTraceType,
                                                                          ref O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6)
        {
            var  lsMatches = new List <string>();
            bool bVerbose  = false;

            if (fadO2AssessmentDataOunceV6 == null)
            {
                Analysis.loadAssessmentFile(sPathToSavedXmlFile, bVerbose, ref fadO2AssessmentDataOunceV6);
            }
            if (null != fadO2AssessmentDataOunceV6.arAssessmentRun.Assessment.Assessment)
            {
                foreach (Assessment aAssessment in fadO2AssessmentDataOunceV6.arAssessmentRun.Assessment.Assessment)
                {
                    foreach (AssessmentAssessmentFile afAssessmentFile in aAssessment.AssessmentFile)
                    {
                        if (null != afAssessmentFile.Finding)
                        {
                            foreach (AssessmentAssessmentFileFinding aaffFinding in afAssessmentFile.Finding)
                            {
                                String sSignature = Analysis.getSmartTraceNameOfTraceType(aaffFinding.Trace, ttTraceType,
                                                                                          fadO2AssessmentDataOunceV6);
                                if (sSignature != "" && false == lsMatches.Contains(sSignature))
                                {
                                    lsMatches.Add(sSignature);
                                }
                            }
                        }
                    }
                }
            }
            return(lsMatches);
        }
Exemple #4
0
 public static bool areAllSourceCodeReferencesInAssessmentFileValid(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6)
 {
     PublicDI.log.debug("Checking to see if all source code references are valid");
     if (oadO2AssessmentDataOunceV6.arAssessmentRun == null)
     {
         PublicDI.log.error(
             "in areAllSourceCodeReferencesInAssessmentFileValid: oadO2AssessmentDataOunceV6.arAssessmentRun == null  (aborting)");
         return(true);
     }
     try
     {
         foreach (string sFile in getListOfUniqueFiles(oadO2AssessmentDataOunceV6))
         {
             if (false == File.Exists(sFile))
             {
                 return(false);
             }
         }
         return(true);
     }
     catch (Exception ex)
     {
         PublicDI.log.error("in areAllSourceCodeReferencesInAssessmentFileValid: {0}", ex.Message);
         return(false);
     }
 }
        private static string fromAssessmentRunFileCreateNewFileWithUniqueTraces(string sPathToNewAssessmentFile, bool bDropDuplicateSmartTraces, bool bIgnoreRootCallInvocation)
        {
            string sTargetFilename;

            DI.log.debug("Create file with unique traces");
            //
            O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6NewFile = null;

            Analysis.loadAssessmentFile(sPathToNewAssessmentFile, false, ref oadO2AssessmentDataOunceV6NewFile);


            Analysis.FindingNameFormat ffnFindingNameFormat = Analysis.FindingNameFormat.FindingType;
            bool bChangeFindingData = false;

            var ffsmFilter = new AnalysisFilters.filter_FindSmartTraces(bDropDuplicateSmartTraces,
                                                                        bIgnoreRootCallInvocation,
                                                                        ffnFindingNameFormat, bChangeFindingData);
            AssessmentRun arFilteredAssessmentRun =
                Analysis.createFilteredAssessmentRunObjectBasedOnCriteria(ffsmFilter, oadO2AssessmentDataOunceV6NewFile);

            DI.log.debug("Completed process of filtering to remove duplicate findings");
            sTargetFilename = sPathToNewAssessmentFile + "_UniqueTraces.ozasmt";
            Analysis.saveFilteredAssessmentRun(arFilteredAssessmentRun, sTargetFilename,
                                               oadO2AssessmentDataOunceV6NewFile);
            return(sTargetFilename);
        }
        public static List <String> getListOf_KnownSinks(String sPathToSavedXmlFile,
                                                         ref O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6)
        {
            TraceType ttTraceType = TraceType.Known_Sink;

            return(getListOf_TraceSignatures_ByTraceType(sPathToSavedXmlFile, ttTraceType, ref fadO2AssessmentDataOunceV6));
        }
Exemple #7
0
            public static void addFindingAsGlueTrace(O2TraceBlock_OunceV6 otbO2TraceBlockOunceV6WithTracesToGlue,
                                                     AssessmentAssessmentFileFinding fFinding,
                                                     O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6, TreeView tvRawData,
                                                     bool bAddGluedTracesAsRealTraces)
            {
                String sUniqueSignature = analyzer.getUniqueSignature(fFinding, TraceType.Known_Sink,
                                                                      oadO2AssessmentDataOunceV6, true);

                var otbO2TraceBlockWithTracesToReceiveTraces = (O2TraceBlock_OunceV6)tvRawData.Nodes[sUniqueSignature].Tag;

                foreach (AssessmentAssessmentFileFinding fFindingToGlue in otbO2TraceBlockOunceV6WithTracesToGlue.dSinks.Keys)
                {
                    if (false == otbO2TraceBlockWithTracesToReceiveTraces.dGluedSinks.ContainsKey(fFindingToGlue))
                    {
                        otbO2TraceBlockWithTracesToReceiveTraces.dGluedSinks.Add(fFindingToGlue,
                                                                                 otbO2TraceBlockOunceV6WithTracesToGlue.dSinks[
                                                                                     fFindingToGlue]);
                    }
                    if (bAddGluedTracesAsRealTraces) // so that the traces show in the Raw View list
                    {
                        if (false == otbO2TraceBlockWithTracesToReceiveTraces.dSinks.ContainsKey(fFindingToGlue))
                        {
                            otbO2TraceBlockWithTracesToReceiveTraces.dSinks.Add(fFindingToGlue,
                                                                                otbO2TraceBlockOunceV6WithTracesToGlue.dSinks[
                                                                                    fFindingToGlue]);
                        }
                    }
                }
            }
        public static List <String> getListOf_Sinks(String sPathToSavedXmlFile, ref O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6)
        {
            //   Analysis.TraceType ttTraceType = Analysis.TraceType.Known_Sink;
            List <String> lsSinks = getListOf_KnownSinks(sPathToSavedXmlFile, ref fadO2AssessmentDataOunceV6);

            lsSinks.AddRange(getListOf_LostSinks(sPathToSavedXmlFile, ref fadO2AssessmentDataOunceV6));
            return(lsSinks);
        }
Exemple #9
0
        public static void fixAllFileReferencesOnAssessmentDataObject(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6,
                                                                      String sFix_PathToFind, String sFix_PathToReplace)
        {
            var rfmresolvedFileMapping = new SourceCodeMappingsUtils.resolvedFileMapping("")
            {
                sFix_PathToFind    = sFix_PathToFind,
                sFix_PathToReplace = sFix_PathToReplace
            };

            fixAllFileReferencesOnAssessmentDataObject(oadO2AssessmentDataOunceV6, rfmresolvedFileMapping);
        }
Exemple #10
0
        public static void tryToFixSourceCodeReferences(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6)
        {
            PublicDI.log.debug("Trying To Fix Source Code References");
            SourceCodeMappings scmSourceCodeMappings = SourceCodeMappingsUtils.getSourceCodeMappings();

            foreach (SourceCodeMappingsMapping mMapping in scmSourceCodeMappings.Mapping)
            {
                fixAllFileReferencesOnAssessmentDataObject(oadO2AssessmentDataOunceV6, mMapping.replaceThisString,
                                                           mMapping.withThisString);
            }
        }
 public static void MakeAllLostSinksIntoKnownSinks(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6)
 {
     foreach (AssessmentAssessmentFileFinding fFinding in oadO2AssessmentDataOunceV6.dFindings.Keys)
     {
         CallInvocation ciLostSink =
             AnalysisSearch.findTraceTypeInSmartTrace_Recursive_returnCallInvocation(fFinding.Trace,
                                                                                     TraceType.Lost_Sink);
         if (ciLostSink != null)
         {
             ciLostSink.trace_type = (UInt32)TraceType.Known_Sink;
         }
     }
 }
        public static void createSavedAssessmentFileWith_LostSinks_Unique(String sPathToFindingsXmlFile_Source,
                                                                          String sPathToFindingsXmlFile_Target)
        {
            O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6 = null;
            bool bChangeFindingData = true;
            bool bVerbose           = false;

            Analysis.loadAssessmentFile(sPathToFindingsXmlFile_Source, bVerbose, ref fadO2AssessmentDataOunceV6);
            Analysis.FindingNameFormat ffnFindingNameFormat = Analysis.FindingNameFormat.Sink;
            Analysis.createAssessmentFileWithLostSinks_OneExampleEach(sPathToFindingsXmlFile_Target,
                                                                      ffnFindingNameFormat, bChangeFindingData,
                                                                      fadO2AssessmentDataOunceV6);
        }
        public static String getSource(AssessmentAssessmentFileFinding fFinding, O2AssessmentData_OunceV6 oadF1AssessmentDataOunceV6)
        {
            CallInvocation ciCallInvocation =
                AnalysisSearch.findTraceTypeInSmartTrace_Recursive_returnCallInvocation(fFinding.Trace,
                                                                                        TraceType.Source);

            if (ciCallInvocation != null)
            {
                return(OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.sig_id, oadF1AssessmentDataOunceV6));
            }

            return("");
        }
 public void loadAssessmentRunFileAndAddItToList(String sPathToFile, bool bCheckSourceCodeReferences)
 {
     if (Path.GetExtension(sPathToFile) == ".zip")
     {
         string tempFolder = DI.config.TempFolderInTempDirectory;
         new zipUtils().unzipFile(sPathToFile, tempFolder);
         foreach (string unzipedFile in Files.getFilesFromDir_returnFullPath(tempFolder))
         {
             loadAssessmentRunFileAndAddItToList(unzipedFile, bCheckSourceCodeReferences);
         }
     }
     else
     {
         O2AssessmentData_OunceV6 oadO2AssessmentData = null;
         O2Timer tTimer = new O2Timer("Loaded SavedAssessmentFile").start();
         Analysis.loadAssessmentFile(sPathToFile, false, ref oadO2AssessmentData);
         if (oadO2AssessmentData.arAssessmentRun == null)
         {
             DI.log.error(
                 "Serialized Saved Assessment run was null (are you sure this is an SavedAssessment file? :{0}",
                 sPathToFile);
             return;
         }
         // Calculate Xrefs into fadAssessmentData
         Analysis.populateDictionariesWithXrefsToLoadedAssessment(ffFindingFilter, bDropDuplicateSmartTraces,
                                                                  bIgnoreRootCallInvocation, oadO2AssessmentData);
         if (oadO2AssessmentData != null)
         {
             foreach (object oItem in lbLoadedAssessmentFiles.Items)
             {
                 if (oItem.ToString() == oadO2AssessmentData.ToString())
                 {
                     DI.log.error(
                         "in loadAssessmentRunFileAndAddItToList, file is already in the list of O2AssessmentRun objects");
                     tTimer.stop();
                     return;
                 }
             }
             lbLoadedAssessmentFiles.Items.Add(oadO2AssessmentData);
             //O2Forms.executeMethodThreadSafe(lbLoadedAssessmentFiles,lbLoadedAssessmentFiles.Items, "Add", new object[] { oadO2AssessmentData });
             //lbTargetSavedAssessmentFiles.Items.Add(oadO2AssessmentData);
         }
         if (bCheckSourceCodeReferences)
         {
             checkIfSourceCodeReferencesAreValid();
         }
         tTimer.stop();
         ascx_svpSearchAssessmentRun.setCheckBox_Checked(2, true);
     }
 }
        public static AssessmentAssessmentFileFinding createNewFindingFromExistingOne(
            AssessmentAssessmentFileFinding fOriginalFinding, Dictionary <String, UInt32> dNewStringIndex,
            Dictionary <String, UInt32> dNewFileIndex, O2AssessmentData_OunceV6 fadOriginalO2AssessmentDataOunceV6)
        {
            if (fOriginalFinding != null && fOriginalFinding.Trace != null)
            {
                var fFinding = new AssessmentAssessmentFileFinding();
                fFinding.actionobject_id = fOriginalFinding.actionobject_id;
                fFinding.caller_name     = fOriginalFinding.caller_name;
                //fFinding.caller_name_id = fOriginalFinding.caller_name_id;
                fFinding.caller_name_id = (fOriginalFinding.caller_name_id == null)
                                              ? null
                                              : updateNewAssessmentRunWithStringID(
                    UInt32.Parse(fOriginalFinding.caller_name_id), dNewStringIndex,
                    fadOriginalO2AssessmentDataOunceV6).ToString();
                fFinding.confidence   = fOriginalFinding.confidence;
                fFinding.context      = fOriginalFinding.context;
                fFinding.exclude      = fOriginalFinding.exclude;
                fFinding.line_number  = fOriginalFinding.line_number;
                fFinding.ordinal      = fOriginalFinding.ordinal;
                fFinding.project_name = fOriginalFinding.project_name;
                fFinding.property_ids = fOriginalFinding.property_ids;
                fFinding.record_id    = fOriginalFinding.record_id;
                fFinding.severity     = fOriginalFinding.severity;
                fFinding.Text         = fOriginalFinding.Text;
                fFinding.vuln_name    = fOriginalFinding.vuln_name;
                fFinding.vuln_name_id = (fOriginalFinding.vuln_name_id == null)
                                            ? null
                                            : updateNewAssessmentRunWithStringID(
                    UInt32.Parse(fOriginalFinding.vuln_name_id), dNewStringIndex,
                    fadOriginalO2AssessmentDataOunceV6).ToString();
                fFinding.vuln_type    = fOriginalFinding.vuln_type;
                fFinding.vuln_type_id = (fOriginalFinding.vuln_type_id == null)
                                            ? null
                                            : updateNewAssessmentRunWithStringID(
                    UInt32.Parse(fOriginalFinding.vuln_type_id), dNewStringIndex,
                    fadOriginalO2AssessmentDataOunceV6).ToString();
                //fFinding.vuln_name = (fOriginalFinding.vuln_name != null) ? fOriginalFinding.vuln_name : Analysis.getStringIndexValue(UInt32.Parse(fOriginalFinding.vuln_name_id), fadOriginalO2AssessmentDataOunceV6);
                //fFinding.vuln_type = (fOriginalFinding.vuln_type != null) ? fOriginalFinding.vuln_type : Analysis.getStringIndexValue(UInt32.Parse(fOriginalFinding.vuln_type_id), fadOriginalO2AssessmentDataOunceV6);

                var lciNewCallInvocation = new List <CallInvocation>();
                // fOriginalFinding.Trace = updateAssessmentRunWithTraceReferences_recursive(lciNewCallInvocation, fOriginalFinding.Trace, dNewStringIndex, dNewFileIndex, fadOriginalO2AssessmentDataOunceV6);
                fFinding.Trace = updateAssessmentRunWithTraceReferences_recursive(lciNewCallInvocation,
                                                                                  fOriginalFinding.Trace,
                                                                                  dNewStringIndex, dNewFileIndex,
                                                                                  fadOriginalO2AssessmentDataOunceV6);
                return(fFinding);
            }
            return(fOriginalFinding);
        }
        // we need to create new CallInvocation Objects because we need to change them
        public static CallInvocation[] updateAssessmentRunWithTraceReferences_recursive(
            List <CallInvocation> lciNewCallInvocation, CallInvocation[] aciOriginalCallInvocation,
            Dictionary <String, UInt32> dNewStringIndex, Dictionary <String, UInt32> dNewFileIndex,
            O2AssessmentData_OunceV6 fadOriginalO2AssessmentDataOunceV6)
        {
            if (aciOriginalCallInvocation == null)
            {
                return(null);
            }
            else
            {
                foreach (CallInvocation ciOriginalCallInvocation in aciOriginalCallInvocation)
                {
                    var ciNewCallInvocation = new CallInvocation();
                    ciNewCallInvocation.cn_id = updateNewAssessmentRunWithStringID(ciOriginalCallInvocation.cn_id,
                                                                                   dNewStringIndex,
                                                                                   fadOriginalO2AssessmentDataOunceV6);
                    ciNewCallInvocation.column_number = ciOriginalCallInvocation.column_number;
                    ciNewCallInvocation.cxt_id        = updateNewAssessmentRunWithStringID(ciOriginalCallInvocation.cxt_id,
                                                                                           dNewStringIndex,
                                                                                           fadOriginalO2AssessmentDataOunceV6);
                    ciNewCallInvocation.fn_id = updateNewAssessmentRunWithFileID(ciOriginalCallInvocation.fn_id,
                                                                                 dNewFileIndex,
                                                                                 fadOriginalO2AssessmentDataOunceV6);
                    ciNewCallInvocation.line_number = ciOriginalCallInvocation.line_number;
                    ciNewCallInvocation.mn_id       = updateNewAssessmentRunWithStringID(ciOriginalCallInvocation.mn_id,
                                                                                         dNewStringIndex,
                                                                                         fadOriginalO2AssessmentDataOunceV6);
                    ciNewCallInvocation.ordinal = ciOriginalCallInvocation.ordinal;
                    ciNewCallInvocation.sig_id  = updateNewAssessmentRunWithStringID(ciOriginalCallInvocation.sig_id,
                                                                                     dNewStringIndex,
                                                                                     fadOriginalO2AssessmentDataOunceV6);
                    ciNewCallInvocation.taint_propagation = ciOriginalCallInvocation.taint_propagation;
                    ciNewCallInvocation.Text       = ciOriginalCallInvocation.Text;
                    ciNewCallInvocation.trace_type = ciOriginalCallInvocation.trace_type;

                    var lciNewCallInvocation_Child = new List <CallInvocation>();
                    ciNewCallInvocation.CallInvocation1 =
                        updateAssessmentRunWithTraceReferences_recursive(lciNewCallInvocation_Child,
                                                                         ciOriginalCallInvocation.CallInvocation1,
                                                                         dNewStringIndex, dNewFileIndex,
                                                                         fadOriginalO2AssessmentDataOunceV6);

                    lciNewCallInvocation.Add(ciNewCallInvocation);
                }
                return(lciNewCallInvocation.ToArray());
            }
        }
 public static void getListWithMethodsCalled_Recursive(CallInvocation[] cCallInvocations,
                                                       List <CallInvocation> lciMethodsCalled,
                                                       O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6,
                                                       Analysis.SmartTraceFilter stfSmartTraceFilter)
 {
     if (cCallInvocations != null)
     {
         foreach (CallInvocation cCall in cCallInvocations)
         {
             lciMethodsCalled.Add(cCall);
             //lsMethodsCalled.Add(getTextFromFindingBySmartTraceFilter(cCall,fadO2AssessmentDataOunceV6,stfSmartTraceFilter));
             getListWithMethodsCalled_Recursive(cCall.CallInvocation1, lciMethodsCalled, fadO2AssessmentDataOunceV6,
                                                stfSmartTraceFilter);
         }
     }
 }
Exemple #18
0
        public static O2AssessmentData_OunceV6 loadAssessmentRunFileAndAddItToList(String sPathToFile)
        {
            var bDropDuplicateSmartTraces = true;
            var bIgnoreRootCallInvocation = true;
            var ffFindingFilter           = Analysis.FindingFilter.AllFindings;
            O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6 = null;
            O2Timer tTimer = new O2Timer("Loaded SavedAssessmentFile").start();

            Analysis.loadAssessmentFile(sPathToFile, false, ref oadO2AssessmentDataOunceV6);
            // Calculate Xrefs into fadAssessmentData

            Analysis.populateDictionariesWithXrefsToLoadedAssessment(ffFindingFilter, bDropDuplicateSmartTraces,

                                                                     bIgnoreRootCallInvocation, oadO2AssessmentDataOunceV6);
            tTimer.stop();
            return(oadO2AssessmentDataOunceV6);
        }
 public static void showCallInvocationDetailsInDataGridView(DataGridView dgvDataGridView,
                                                            CallInvocation ciCallInvocation,
                                                            O2AssessmentData_OunceV6 oadAssessmentDataOunceV6)
 {
     if (ciCallInvocation != null)
     {
         try
         {
             dgvDataGridView.Columns.Clear();
             O2Forms.addToDataGridView_Column(dgvDataGridView, "Name", 90);
             O2Forms.addToDataGridView_Column(dgvDataGridView, "Value", -1);
             dgvDataGridView.Rows.Add("sig_id",
                                      OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.sig_id, oadAssessmentDataOunceV6));
             dgvDataGridView.Rows.Add("cxt_id",
                                      OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.cxt_id, oadAssessmentDataOunceV6));
             dgvDataGridView.Rows.Add("fn_id",
                                      OzasmtUtils_OunceV6.getFileIndexValue(ciCallInvocation.fn_id, oadAssessmentDataOunceV6));
             dgvDataGridView.Rows.Add("cn id",
                                      OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.cn_id, oadAssessmentDataOunceV6));
             dgvDataGridView.Rows.Add("trace_type", ciCallInvocation.trace_type.ToString());
             dgvDataGridView.Rows.Add("column_number", ciCallInvocation.column_number.ToString());
             dgvDataGridView.Rows.Add("line_number", ciCallInvocation.line_number.ToString());
             dgvDataGridView.Rows.Add("mn_id",
                                      OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.mn_id, oadAssessmentDataOunceV6));
             dgvDataGridView.Rows.Add("ordinal", ciCallInvocation.ordinal.ToString());
             dgvDataGridView.Rows.Add("taint_propagation", ciCallInvocation.taint_propagation);
             if (ciCallInvocation.Text != null)
             {
                 var sbText = new StringBuilder();
                 foreach (String sLine in ciCallInvocation.Text)
                 {
                     sbText.AppendLine(sLine);
                 }
                 dgvDataGridView.Rows.Add("Text", sbText.ToString());
             }
             //ciCallInvocation.Text;
         }
         catch (Exception ex)
         {
             DI.log.error("in showCallInvocationDetailsInDataGridView :{0}", ex.Message);
         }
     }
 }
        public static String getTextFromFindingBySmartTraceFilter(CallInvocation cCall,
                                                                  O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6,
                                                                  Analysis.SmartTraceFilter stfSmartTraceFilter)
        {
            String sText = "";

            //case Analysis.SmartTraceFilter.MethodName:  // Use this as the default (since it will cover for the cases where the context or source are empty
            if (cCall.sig_id == 0 && cCall.fn_id > 0)
            {
                sText = fadO2AssessmentDataOunceV6.arAssessmentRun.StringIndeces[cCall.fn_id - 1].value;
            }
            else if (cCall.sig_id == 0)
            {
                sText = "...";
            }
            else
            {
                sText = fadO2AssessmentDataOunceV6.arAssessmentRun.StringIndeces[cCall.sig_id - 1].value;
            }
            switch (stfSmartTraceFilter)
            {
            case Analysis.SmartTraceFilter.Context:
                if (0 != cCall.cxt_id)
                {
                    sText = fadO2AssessmentDataOunceV6.arAssessmentRun.StringIndeces[cCall.cxt_id - 1].value;
                }
                break;

            case Analysis.SmartTraceFilter.SourceCode:
                List <String> lsSourceCode =
                    Files.loadSourceFileIntoList(
                        fadO2AssessmentDataOunceV6.arAssessmentRun.FileIndeces[cCall.fn_id - 1].value);
                String sSounceCodeLine = Files.getLineFromSourceCode(cCall.line_number, lsSourceCode);
                if ("" != sSounceCodeLine)
                {
                    sText = sSounceCodeLine;
                    sText = sText.Replace("\t", "");
                }
                break;
            }
            return(sText);
        }
        public static UInt32 updateNewAssessmentRunWithStringID(UInt32 uIdToUpdate,
                                                                Dictionary <String, UInt32> dNewStringIndex,
                                                                O2AssessmentData_OunceV6 fadOriginalO2AssessmentDataOunceV6)
        {
            if (uIdToUpdate == 0)
            {
                return(0);
            }
            String sTextToUpdate = OzasmtUtils_OunceV6.getStringIndexValue(uIdToUpdate, fadOriginalO2AssessmentDataOunceV6);

            if (dNewStringIndex.ContainsKey(sTextToUpdate))
            {
                return(dNewStringIndex[sTextToUpdate]);
            }

            UInt32 uNewId = (UInt32)dNewStringIndex.Count + 1;

            dNewStringIndex.Add(sTextToUpdate, uNewId);
            return(uNewId);
        }
        public static List <String> getListOf_LostSinks_Unique(String sPathToSavedXmlFile,
                                                               ref O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6)
        {
            var lMatches = new List <string>();


            bool bChangeFindingData = false;

            Analysis.FindingNameFormat ffnFindingNameFormat = Analysis.FindingNameFormat.FindingType;
            var ffulsFilter = new AnalysisFilters.filter_FindUniqueLostSinks(ffnFindingNameFormat, bChangeFindingData);
            List <AssessmentAssessmentFileFinding> laaffFindings = getListOfFindingsUsingFilter(sPathToSavedXmlFile,
                                                                                                ffulsFilter,
                                                                                                ref fadO2AssessmentDataOunceV6);

            foreach (AssessmentAssessmentFileFinding aaffFinding in laaffFindings)
            {
                lMatches.Add(Analysis.getSmartTraceNameOfTraceType(aaffFinding.Trace, TraceType.Lost_Sink,
                                                                   fadO2AssessmentDataOunceV6));
            }
            return(lMatches);
        }
            public AssessmentAssessmentFileFinding AddNewFindingFromExistingOne(
                AssessmentAssessmentFileFinding fFinding, O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6)
            {
                AssessmentAssessmentFileFinding fNewFinding = createNewFindingFromExistingOne(fFinding, dNewStringIndex,
                                                                                              dNewFileIndex,
                                                                                              oadO2AssessmentDataOunceV6);

                lfNewFindinds.Add(fNewFinding);

                //AssessmentAssessmentFile fNewFile = AnalysisSearch.createNewAssessmentFileFromExistingOne(fviJoinAtSink.oadO2AssessmentDataOunceV6.dFindings[fviJoinAtSink.fFinding]);
                AssessmentAssessmentFile fNewFile =
                    createNewAssessmentFileFromExistingOne(oadO2AssessmentDataOunceV6.dFindings[fFinding]);

                fNewFile.Finding = new[] { fNewFinding };

                oadNewO2AssessmentDataOunceV6.dFindings =
                    new Dictionary <AssessmentAssessmentFileFinding, AssessmentAssessmentFile>();
                oadNewO2AssessmentDataOunceV6.dFindings.Add(fNewFinding, fNewFile);
                fLastFindingAdded = fNewFinding;
                return(fNewFinding);
            }
        private void tvSmartTrace_AfterSelect(object sender, TreeViewEventArgs e)
        {
            var fviFindingViewItem = (FindingViewItem)tvSmartTrace.Tag;
            O2AssessmentData_OunceV6 fadAssessmentDataOunceV6 = fviFindingViewItem.oadO2AssessmentDataOunceV6;

            switch (e.Node.Tag.GetType().Name)
            {
            case "CallInvocation":
                var cCall = (CallInvocation)e.Node.Tag;
                if (fadAssessmentDataOunceV6.arAssessmentRun.FileIndeces.Length < cCall.fn_id)
                {
                    break;
                }
                String sSourceCodeFile = OzasmtUtils_OunceV6.getFileIndexValue(cCall.fn_id,
                                                                               fviFindingViewItem.oadO2AssessmentDataOunceV6);     //
                //  fadAssessmentDataOunceV6.arAssessmentRun.FileIndeces[cCall.fn_id - 1].value;

                ascx_SourceCodeEditor1.gotoLine(sSourceCodeFile, (int)cCall.line_number);

                ascx_Glee1.showCallInGlee(e.Node.Text);

                FindingsView.showCallInvocationDetailsInDataGridView(dgvCallInvocationDetails, cCall,
                                                                     fviFindingViewItem.oadO2AssessmentDataOunceV6);

                //String sSignature = o2.analysis.Analysis.getStringIndexValue(cCall.sig_id, fadAssessmentDataOunceV6);
                //         ascx_RulesCreator1.addMethodToTargetsList(fadAssessmentDataOunceV6.sDb_id, sSignature, true);
                //         o2.ounce.datalayer.mysql.MySqlEvents.raiseEvent_ShowCustomRulesDetails_MethodSignature(fadAssessmentDataOunceV6.sDb_id, sSignature);

                break;

            //case "AssessmentAssessmentFileFinding":
            //    break;
            default:
                DI.log.error("in tvSmartTrace_AfterSelect: not supported type: {0}", e.Node.Tag.GetType().Name);
                break;
            }
            tvSmartTrace.Focus();
        }
        public static String getUniqueSignature(AssessmentAssessmentFileFinding fFinding, TraceType ttTraceType,
                                                O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6, bool bShowFullPathForFileName)
        {
            CallInvocation ciCallInvocation =
                AnalysisSearch.findTraceTypeInSmartTrace_Recursive_returnCallInvocation(fFinding.Trace, ttTraceType);

            if (ciCallInvocation == null)
            {
                return(null);
            }
            String sSourceSignature = OzasmtUtils_OunceV6.getStringIndexValue(ciCallInvocation.sig_id, oadO2AssessmentDataOunceV6);
            String sFile            = OzasmtUtils_OunceV6.getFileIndexValue(ciCallInvocation.fn_id, oadO2AssessmentDataOunceV6);
            String sLineNumber      = ciCallInvocation.line_number.ToString();

            if (bShowFullPathForFileName)
            {
                return(String.Format("{0}      {1}      {2}", sSourceSignature, sFile, sLineNumber));
            }
            else
            {
                return(String.Format("{0}      {1}      {2}", sSourceSignature, Path.GetFileName(sFile), sLineNumber));
            }
        }
Exemple #26
0
        public static List <String> getListOfUniqueFiles(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6)
        {
            var lsUniqueFiles = new List <string>();

            // search in FileIndexes
            foreach (AssessmentRunFileIndex fiFileIndex in oadO2AssessmentDataOunceV6.arAssessmentRun.FileIndeces)
            {
                if (false == lsUniqueFiles.Contains(fiFileIndex.value))
                {
                    lsUniqueFiles.Add(fiFileIndex.value);
                }
            }
            foreach (AssessmentAssessmentFile fFile in oadO2AssessmentDataOunceV6.dAssessmentFiles.Keys)
            {
                if (false == lsUniqueFiles.Contains(fFile.filename))
                {
                    lsUniqueFiles.Add(fFile.filename);
                }
            }
            // search in FileFindings
            // {to do}
            return(lsUniqueFiles);
        }
Exemple #27
0
 public static void fixAllFileReferencesOnAssessmentDataObject(O2AssessmentData_OunceV6 oadO2AssessmentDataOunceV6,
                                                               SourceCodeMappingsUtils.resolvedFileMapping rfmResolvedFileMapping)
 {
     if (oadO2AssessmentDataOunceV6 != null && rfmResolvedFileMapping != null)
     {
         foreach (AssessmentRunFileIndex fiFileIndex in oadO2AssessmentDataOunceV6.arAssessmentRun.FileIndeces)
         {
             fiFileIndex.value = fiFileIndex.value.Replace(rfmResolvedFileMapping.sFix_PathToFind,
                                                           rfmResolvedFileMapping.sFix_PathToReplace);
         }
         foreach (AssessmentAssessmentFile fFile in oadO2AssessmentDataOunceV6.dAssessmentFiles.Keys)
         {
             if (rfmResolvedFileMapping.sFix_PathToFind != "")
             {
                 fFile.filename = fFile.filename.Replace(rfmResolvedFileMapping.sFix_PathToFind,
                                                         rfmResolvedFileMapping.sFix_PathToReplace);
             }
             else
             {
                 fFile.filename = Path.Combine(rfmResolvedFileMapping.sFix_PathToReplace, fFile.filename);
             }
         }
     }
 }
 public void loadSmartTraceGraphInGleeViewer(O2AssessmentData_OunceV6 fadAssessmentDataOunceV6)
 {
     setAssessmentData(fadAssessmentDataOunceV6);
     loadSmartTraceGraphInGleeViewer(rbGraphAllNodes.Checked);
 }
 public void setAssessmentData(O2AssessmentData_OunceV6 fadAssessmentDataOunceV6)
 {
     this.fadAssessmentDataOunceV6 = fadAssessmentDataOunceV6;
 }
        public static List <String> getListOf_LostSinks_Unique(String sPathToSavedXmlFile)
        {
            O2AssessmentData_OunceV6 fadO2AssessmentDataOunceV6 = null;

            return(getListOf_LostSinks_Unique(sPathToSavedXmlFile, ref fadO2AssessmentDataOunceV6));
        }