MdeModulePkg: Add NULL pointer check for RegularExpressionDxe.
Refine code by adding NULL pointer check to avoid potential NULL pointer dereferenced. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Qiu Shumin <shumin.qiu@intel.com> Reviewed-by: Samer El-Haj-Mahmoud <elhaj@hpe.com> git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@19271 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
@@ -1248,6 +1248,9 @@ compile_length_enclose_node(EncloseNode* node, regex_t* reg)
|
||||
|
||||
case ENCLOSE_STOP_BACKTRACK:
|
||||
if (IS_ENCLOSE_STOP_BT_SIMPLE_REPEAT(node)) {
|
||||
if (node->target == NULL) {
|
||||
CHECK_NULL_RETURN_MEMERR(node->target);
|
||||
}
|
||||
QtfrNode* qn = NQTFR(node->target);
|
||||
tlen = compile_length_tree(qn->target, reg);
|
||||
if (tlen < 0) return tlen;
|
||||
@@ -3263,6 +3266,7 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[],
|
||||
int r, i, j, len, varlen;
|
||||
Node *anode, *var_anode, *snode, *xnode, *an;
|
||||
UChar buf[ONIGENC_CODE_TO_MBC_MAXLEN];
|
||||
xnode = NULL_NODE;
|
||||
|
||||
*rnode = var_anode = NULL_NODE;
|
||||
|
||||
@@ -3317,7 +3321,7 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[],
|
||||
}
|
||||
|
||||
if (items[i].byte_len != slen) {
|
||||
Node *rem;
|
||||
Node *rem = NULL_NODE;
|
||||
UChar *q = p + items[i].byte_len;
|
||||
|
||||
if (q < end) {
|
||||
@@ -3346,6 +3350,12 @@ expand_case_fold_string_alt(int item_num, OnigCaseFoldCodeItem items[],
|
||||
NCAR(an) = snode;
|
||||
}
|
||||
|
||||
if (var_anode == NULL) {
|
||||
onig_node_free(an);
|
||||
onig_node_free(xnode);
|
||||
onig_node_free(rem);
|
||||
goto mem_err2;
|
||||
}
|
||||
NCDR(var_anode) = an;
|
||||
var_anode = an;
|
||||
}
|
||||
@@ -5304,7 +5314,7 @@ onig_compile(regex_t* reg, const UChar* pattern, const UChar* pattern_end,
|
||||
#endif
|
||||
|
||||
r = onig_parse_make_tree(&root, pattern, pattern_end, reg, &scan_env);
|
||||
if (r != 0) goto err;
|
||||
if (r != 0 || root == NULL) goto err;
|
||||
|
||||
#ifdef USE_NAMED_GROUP
|
||||
/* mixed use named group and no-named group */
|
||||
|
Reference in New Issue
Block a user