]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Universal/RegularExpressionDxe/Oniguruma/regparse.c
MdeModulePkg RegularExpressionDxe: Add the missing EFIAPI for the function
[mirror_edk2.git] / MdeModulePkg / Universal / RegularExpressionDxe / Oniguruma / regparse.c
index d7e645bf9af61f611fc0599444e90833b3382bcc..a87fbfc426c047a5e71b839f0b5616f011d98b29 100644 (file)
@@ -5,7 +5,7 @@
  * Copyright (c) 2002-2008  K.Kosako  <sndgk393 AT ybb DOT ne DOT jp>\r
  * All rights reserved.\r
  *\r
- * Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>\r
+ * (C) Copyright 2015 Hewlett Packard Enterprise Development LP<BR>\r
  *\r
  * Redistribution and use in source and binary forms, with or without\r
  * modification, are permitted provided that the following conditions\r
@@ -369,7 +369,7 @@ onig_st_lookup_strend(hash_table_type* table, const UChar* str_key,
   key.s   = (UChar* )str_key;\r
   key.end = (UChar* )end_key;\r
 \r
-  return onig_st_lookup(table, (st_data_t )(&key), value);\r
+  return onig_st_lookup(table, (st_data_t )(UINTN)(&key), value);\r
 }\r
 \r
 extern int\r
@@ -380,9 +380,10 @@ onig_st_insert_strend(hash_table_type* table, const UChar* str_key,
   int result;\r
 \r
   key = (st_str_end_key* )xmalloc(sizeof(st_str_end_key));\r
+  CHECK_NULL_RETURN_MEMERR(key);\r
   key->s   = (UChar* )str_key;\r
   key->end = (UChar* )end_key;\r
-  result = onig_st_insert(table, (st_data_t )key, value);\r
+  result = onig_st_insert(table, (st_data_t )(UINTN)key, value);\r
   if (result) {\r
     xfree(key);\r
   }\r
@@ -534,7 +535,7 @@ onig_foreach_name(regex_t* reg,
     narg.reg  = reg;\r
     narg.arg  = arg;\r
     narg.enc  = reg->enc; /* should be pattern encoding. */\r
-    onig_st_foreach(t, i_names, (HashDataType )&narg);\r
+    onig_st_foreach(t, i_names, (HashDataType )(UINTN)&narg);\r
   }\r
   return narg.ret;\r
 }\r
@@ -562,7 +563,7 @@ onig_renumber_name_table(regex_t* reg, GroupNumRemap* map)
   NameTable* t = (NameTable* )reg->name_table;\r
 \r
   if (IS_NOT_NULL(t)) {\r
-    onig_st_foreach(t, i_renumber_name, (HashDataType )map);\r
+    onig_st_foreach(t, i_renumber_name, (HashDataType )(UINTN)map);\r
   }\r
   return 0;\r
 }\r
@@ -732,6 +733,7 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env)
 #ifdef USE_ST_LIBRARY\r
     if (IS_NULL(t)) {\r
       t = onig_st_init_strend_table_with_size(5);\r
+      CHECK_NULL_RETURN_MEMERR(t);\r
       reg->name_table = (void* )t;\r
     }\r
     e = (NameEntry* )xmalloc(sizeof(NameEntry));\r
@@ -742,7 +744,7 @@ name_add(regex_t* reg, UChar* name, UChar* name_end, int backref, ScanEnv* env)
       xfree(e);  return ONIGERR_MEMORY;\r
     }\r
     onig_st_insert_strend(t, e->name, (e->name + (name_end - name)),\r
-                          (HashDataType )e);\r
+                          (HashDataType )(UINTN)e);\r
 \r
     e->name_len   = (int)(name_end - name);\r
     e->back_num   = 0;\r
@@ -964,6 +966,8 @@ scan_env_add_mem_entry(ScanEnv* env)
       if (IS_NULL(env->mem_nodes_dynamic)) {\r
        alloc = INIT_SCANENV_MEMNODES_ALLOC_SIZE;\r
        p = (Node** )xmalloc(sizeof(Node*) * alloc);\r
+    CHECK_NULL_RETURN_MEMERR(p);\r
+  \r
        xmemcpy(p, env->mem_nodes_static,\r
                sizeof(Node*) * SCANENV_MEMNODES_SIZE);\r
       }\r
@@ -1522,6 +1526,7 @@ static Node*
 node_new_str_raw(UChar* s, UChar* end)\r
 {\r
   Node* node = node_new_str(s, end);\r
+  CHECK_NULL_RETURN(node);\r
   NSTRING_SET_RAW(node);\r
   return node;\r
 }\r
@@ -1551,6 +1556,7 @@ str_node_split_last_char(StrNode* sn, OnigEncoding enc)
     p = onigenc_get_prev_char_head(enc, sn->s, sn->end);\r
     if (p && p > sn->s) { /* can be splitted. */\r
       n = node_new_str(p, sn->end);\r
+      CHECK_NULL_RETURN(n);\r
       if ((sn->flag & NSTR_RAW) != 0)\r
        NSTRING_SET_RAW(n);\r
       sn->end = (UChar* )p;\r
@@ -2211,7 +2217,7 @@ onig_reduce_nested_quantifier(Node* pnode, Node* cnode)
 \r
   switch(ReduceTypeTable[cnum][pnum]) {\r
   case RQ_DEL:\r
-    *pnode = *cnode;\r
+    CopyMem (pnode, cnode, sizeof (Node));\r
     break;\r
   case RQ_A:\r
     p->target = c->target;\r
@@ -4785,6 +4791,9 @@ set_quantifier(Node* qnode, Node* target, int group, ScanEnv* env)
       QtfrNode* qnt   = NQTFR(target);\r
       int nestq_num   = popular_quantifier_num(qn);\r
       int targetq_num = popular_quantifier_num(qnt);\r
+      if (nestq_num < 0 || targetq_num < 0) {\r
+        return ONIGERR_TYPE_BUG;\r
+      }\r
 \r
 #ifdef USE_WARNING_REDUNDANT_NESTED_REPEAT_OPERATOR\r
       if (!IS_QUANTIFIER_BY_NUMBER(qn) && !IS_QUANTIFIER_BY_NUMBER(qnt) &&\r
@@ -5217,7 +5226,7 @@ parse_exp(Node** np, OnigToken* tok, int term,
               }\r
             }\r
             else {\r
-              if (onig_st_lookup(OnigTypeCClassTable, (st_data_t )&key,\r
+              if (onig_st_lookup(OnigTypeCClassTable, (st_data_t )(UINTN)&key,\r
                                  (st_data_t* )np)) {\r
                 THREAD_ATOMIC_END;\r
                 break;\r
@@ -5234,9 +5243,10 @@ parse_exp(Node** np, OnigToken* tok, int term,
             cc = NCCLASS(*np);\r
             NCCLASS_SET_SHARE(cc);\r
             new_key = (type_cclass_key* )xmalloc(sizeof(type_cclass_key));\r
+            CHECK_NULL_RETURN_MEMERR(new_key);\r
            xmemcpy(new_key, &key, sizeof(type_cclass_key));\r
-            onig_st_add_direct(OnigTypeCClassTable, (st_data_t )new_key,\r
-                               (st_data_t )*np);\r
+            onig_st_add_direct(OnigTypeCClassTable, (st_data_t )(UINTN)new_key,\r
+                               (st_data_t )(UINTN)*np);\r
             \r
             THREAD_ATOMIC_END;\r
           }\r
@@ -5345,6 +5355,7 @@ parse_exp(Node** np, OnigToken* tok, int term,
 \r
   case TK_ANCHOR:\r
     *np = onig_node_new_anchor(tok->u.anchor);\r
+    CHECK_NULL_RETURN_MEMERR(*np);\r
     break;\r
 \r
   case TK_OP_REPEAT:\r
@@ -5354,6 +5365,7 @@ parse_exp(Node** np, OnigToken* tok, int term,
        return ONIGERR_TARGET_OF_REPEAT_OPERATOR_NOT_SPECIFIED;\r
       else\r
        *np = node_new_empty();\r
+  CHECK_NULL_RETURN_MEMERR(*np);\r
     }\r
     else {\r
       goto tk_byte;\r
@@ -5442,9 +5454,11 @@ parse_branch(Node** top, OnigToken* tok, int term,
   }\r
   else {\r
     *top  = node_new_list(node, NULL);\r
+    CHECK_NULL_RETURN_MEMERR(*top);\r
     headp = &(NCDR(*top));\r
     while (r != TK_EOT && r != term && r != TK_ALT) {\r
       r = parse_exp(&node, tok, term, src, end, env);\r
+      CHECK_NULL_RETURN_MEMERR(node);\r
       if (r < 0) return r;\r
 \r
       if (NTYPE(node) == NT_LIST) {\r
@@ -5482,6 +5496,7 @@ parse_subexp(Node** top, OnigToken* tok, int term,
   }\r
   else if (r == TK_ALT) {\r
     *top  = onig_node_new_alt(node, NULL);\r
+    CHECK_NULL_RETURN_MEMERR(*top);\r
     headp = &(NCDR(*top));\r
     while (r == TK_ALT) {\r
       r = fetch_token(tok, src, end, env);\r