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:
Qiu Shumin
2015-12-15 08:40:55 +00:00
committed by shenshushi
parent 00d1c2a35e
commit b0c2b79738
7 changed files with 50 additions and 4 deletions

View File

@@ -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 */