github.com/TeaOSLab/EdgeNode@v1.3.8/internal/waf/injectionutils/libinjection/src/libinjection_html5.h (about)

     1  #ifndef LIBINJECTION_HTML5
     2  #define LIBINJECTION_HTML5
     3  
     4  #ifdef __cplusplus
     5  extern "C" {
     6  #endif
     7  
     8  /* pull in size_t */
     9  
    10  #include <stddef.h>
    11  
    12  enum html5_type {
    13      DATA_TEXT
    14      , TAG_NAME_OPEN
    15      , TAG_NAME_CLOSE
    16      , TAG_NAME_SELFCLOSE
    17      , TAG_DATA
    18      , TAG_CLOSE
    19      , ATTR_NAME
    20      , ATTR_VALUE
    21      , TAG_COMMENT
    22      , DOCTYPE
    23  };
    24  
    25  enum html5_flags {
    26    DATA_STATE
    27    , VALUE_NO_QUOTE
    28    , VALUE_SINGLE_QUOTE
    29    , VALUE_DOUBLE_QUOTE
    30    , VALUE_BACK_QUOTE
    31  };
    32  
    33  struct h5_state;
    34  typedef int (*ptr_html5_state)(struct h5_state*);
    35  
    36  typedef struct h5_state {
    37      const char* s;
    38      size_t len;
    39      size_t pos;
    40      int is_close;
    41      ptr_html5_state state;
    42      const char* token_start;
    43      size_t token_len;
    44      enum html5_type token_type;
    45  } h5_state_t;
    46  
    47  
    48  void libinjection_h5_init(h5_state_t* hs, const char* s, size_t len, enum html5_flags);
    49  int libinjection_h5_next(h5_state_t* hs);
    50  
    51  #ifdef __cplusplus
    52  }
    53  #endif
    54  #endif