8010500: [parfait] Possible null pointer dereference at hotspot/src/share/vm/opto/loopnode.hpp

Wed, 26 Feb 2014 07:46:46 +0100

author
adlertz
date
Wed, 26 Feb 2014 07:46:46 +0100
changeset 9768
eaae2ae06faf
parent 9767
7f237efc2d2a
child 9769
13ba54363544

8010500: [parfait] Possible null pointer dereference at hotspot/src/share/vm/opto/loopnode.hpp
Summary: Added NULL check for loopnode() in get_pre_loop_end()
Reviewed-by: kvn, roland

src/share/vm/opto/superword.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/share/vm/opto/superword.cpp	Thu Sep 12 15:29:50 2019 -0400
     1.2 +++ b/src/share/vm/opto/superword.cpp	Wed Feb 26 07:46:46 2014 +0100
     1.3 @@ -448,6 +448,7 @@
     1.4      return true;   // no induction variable
     1.5    }
     1.6    CountedLoopEndNode* pre_end = get_pre_loop_end(lp()->as_CountedLoop());
     1.7 +  assert(pre_end != NULL, "we must have a correct pre-loop");
     1.8    assert(pre_end->stride_is_con(), "pre loop stride is constant");
     1.9    int preloop_stride = pre_end->stride_con();
    1.10  
    1.11 @@ -2052,7 +2053,7 @@
    1.12    CountedLoopNode *main_head = lp()->as_CountedLoop();
    1.13    assert(main_head->is_main_loop(), "");
    1.14    CountedLoopEndNode* pre_end = get_pre_loop_end(main_head);
    1.15 -  assert(pre_end != NULL, "");
    1.16 +  assert(pre_end != NULL, "we must have a correct pre-loop");
    1.17    Node *pre_opaq1 = pre_end->limit();
    1.18    assert(pre_opaq1->Opcode() == Op_Opaque1, "");
    1.19    Opaque1Node *pre_opaq = (Opaque1Node*)pre_opaq1;
    1.20 @@ -2216,7 +2217,8 @@
    1.21    if (!p_f->is_IfFalse()) return NULL;
    1.22    if (!p_f->in(0)->is_CountedLoopEnd()) return NULL;
    1.23    CountedLoopEndNode *pre_end = p_f->in(0)->as_CountedLoopEnd();
    1.24 -  if (!pre_end->loopnode()->is_pre_loop()) return NULL;
    1.25 +  CountedLoopNode* loop_node = pre_end->loopnode();
    1.26 +  if (loop_node == NULL || !loop_node->is_pre_loop()) return NULL;
    1.27    return pre_end;
    1.28  }
    1.29  

mercurial