123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- function HashTable() {
- let size = 0;
- let entry = new Object();
- this.add = function (key, value) {
- if (!this.containsKey(key)) {
- size++;
- }
- entry[key] = value;
- };
- this.getValue = function (key) {
- return this.containsKey(key) ? entry[key] : null;
- };
- this.remove = function (key) {
- if (this.containsKey(key) && (delete entry[key])) {
- size--;
- }
- };
- this.containsKey = function (key) {
- return (key in entry);
- };
- this.containsValue = function (value) {
- for (var prop in entry) {
- if (entry[prop] == value) {
- return true;
- }
- }
- return false;
- };
- this.getValues = function () {
- var values = new Array();
- for (var prop in entry) {
- values.push(entry[prop]);
- }
- return values;
- };
- this.getKeys = function () {
- var keys = new Array();
- for (var prop in entry) {
- keys.push(prop);
- }
- return keys;
- };
- this.getSize = function () {
- return size;
- };
- this.clear = function () {
- size = 0;
- entry = new Object();
- }
- }
- let myuser;
- let lines;
- let routineTab = new HashTable();
- let vulTypeCount = new HashTable();
- let fileCount = new HashTable();
- $(document).ready(function () {
- let outhtml;
- try {
- outhtml = $(window.frames["opencc_vul"].document).html();
- }catch (e) {
- outhtml = $(window.frames["opencc_vul"].document)[0].body.innerHTML
- }
- if(outhtml === "" || outhtml == undefined || outhtml == null || outhtml.length == 0){
- $.ajax({url: "opencc_vul.txt"}).done(display_content);
- } else {
- display_content(outhtml);
- }
- });
- function display_content(s){
- let answer = s;
- let i = 0;
- let count = 0;
- let one_obj = {};
- let obj_list = [];
- let all_lines = "";
- lines = answer.split("\n");
- for(i = 0; i < lines.length ; i++){
- let n = lines[i].match(/[a-zA-Z\._:0-9]+/g);
- if(n != null) {
- let res = {}; // One line of result
- res.filename = n[0];
- res.vultype = n[4];
- res.variate = n[8];
- res.subroutine = n[9];
- res.lineno = n[1];
- if(!routineTab.containsKey
- (res.subroutine+"+"+res.variate+"+"+res.filename))
- {
- // Repetition Check Passes
- routineTab.add(res.subroutine+"+"+res.variate+"+"+res.filename, res.vultype);
- obj_list.push(res);
- all_lines += "L" + res.lineno + " - <span> " + res.filename + "</span> <br>";
- count ++;
- if(vulTypeCount.containsKey(res.vultype)){
- let vul_list = vulTypeCount.getValue(res.vultype);
- vul_list.push(res);
- }else{
- let vul_list = new Array();
- vul_list.push(res);
- vulTypeCount.add(res.vultype, vul_list);
- }
- if(fileCount.containsKey(res.filename)){
- let vul_list = fileCount.getValue(res.filename);
- vul_list.push(res);
- }else{
- let vul_list = new Array();
- vul_list.push(res);
- fileCount.add(res.filename, vul_list);
- }
- }
- }
- }
- }
|