⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scanner.h

📁 检查C/C++源程序中的可能错误和容易遭受弱点攻击的地方
💻 H
字号:
/* scanner.H * John Viega * * Jan 28-29 2000 */#ifndef __SCANNER_H__#define __SCANNER_H__#include "lex.H"#include "vulndb.H"#include "handlers.H"struct LineIgnoreList{  int line_start;  int line_end;  char **ignore;   LineIgnoreList *next;  int scope_ends_at_token;  int scope_starts_at_token;  int token_number;  LineIgnoreList(int l1, int l2, int tn)    {      line_start            = l1;      line_end              = l2;      token_number          = tn;      ignore                = 0;      next                  = 0;      scope_ends_at_token   = 0;      scope_starts_at_token = 0;          }  ~LineIgnoreList()    {      int i=0;      if(!ignore) return;      while(ignore[i] != 0)	{	  delete[] ignore[i++];	}      delete[] ignore;    }};class Scanner{public:  Scanner(Lex *l) { lexer = l; ignore_data_end = ignore_data_start = 0;                      ignore_ptr = &ignore_data_start; }  void RunScan();  ~Scanner()  {    while(ignore_data_start)      {	LineIgnoreList *n = ignore_data_start->next;	delete ignore_data_start;	ignore_data_start = n;      }  }private:  Lex            *lexer;  LineIgnoreList *ignore_data_end;  LineIgnoreList *ignore_data_start;  LineIgnoreList **ignore_ptr;  void AddToBigIgnoreList(LineIgnoreList *p);  void CheckName(char *name, TokenContainer *tc, int i, int startline, int endline);  void ProcessIgnores();  void CheckOneContainer(TokenContainer *tc, CommentTok *tok);  void FigureOutCommand(TokenContainer *tc, CommentTok *tok);  void CalculateEffectiveLineNumber(CommentTok *tok, int& l1, int& l2);  int  IgnoreItOrNo(char *id, int start_line, int end_line, int token_index);};  #endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -