Text  |   XML   |   Visible Warnings:

Pvm : Pvm analysis 1 : Null Pointer Dereference  at task.c:778

Categories: LANG.MEM.NPD CWE:476
Warning ID: 2487.2516
Procedure: task_cleanup
Trace: View
Modified: Wed Sep 2 12:39:50 2009   show details
 
Priority: None
State: None
Finding: None
Owner: None
  edit properties

Legend [ X ]
Warning Location
Contributes
Parse Error
Other Warning
Two or More Loop Iterations
On Execution Path
Comment
Macro
Preprocessor
Include
Keyword
Preprocessed Away

Source  |  Language: C Hide Legend     
ProblemLineSource
   /u1/paul/SATE/2010/c/pvm/pvm3/src/task.c
   Enter task_cleanup
 660 task_cleanup(tp) 
 661         struct task *tp;
 662 {
 663         struct pmsg *mp;
 664         struct waitc *wp, *wp2;
 665         struct task *tp2;
 666         struct pvmmentry *ep;
 667         struct hostd *hp;
 668         struct pmsg *mpd;
 669         char buf[512];
 670         int hh;
 671  
 672         /* notify anyone who asked */ 
 673  
 674         if (tp->t_tid) {
 675                 if (pvmdebmask & PDMTASK)
 676                         pvmlogprintf("task_cleanup() t%x\n", tp->t_tid);
 677  
 678                 for (wp = waitlist->wa_link; wp != waitlist; wp = wp->wa_link) {
 679  
 680         /* waits depending on this task */ 
 681  
 682                         if (wp->wa_on == tp->t_tid) {
 683                                 switch (wp->wa_kind) {
 684  
 685                                 case WT_HOSTSTART: 
 686                                         busyadding = 0;
 687                                         free_waitc_add((struct waitc_add *)wp->wa_spec);
 688                                         pkint(wp->wa_mesg, PvmDSysErr);
 689                                         sendmessage(wp->wa_mesg);
 690                                         wp->wa_mesg = 0;
 691                                         if (pvmdebmask & (PDMTASK|PDMSTARTUP))
 692                                                 pvmlogprintf( 
 693                                                         "task_cleanup() hoster t%x takes wid %d with it\n",
 694                                                         tp->t_tid, wp->wa_wid);
 695                                         break;
 696  
 697                                 case WT_TASKSTART: 
 698                                         if (wp->wa_tid) {
 699                                                 if (pvmdebmask & PDMTASK) {
 700                                                         pvmlogprintf( 
 701                                                                 "task_cleanup() tasker t%x takes t%x with it\n",
 702                                                                 tp->t_tid, wp->wa_tid);
 703                                                 }
 704                                                 if (tp2 = task_find(wp->wa_tid)) {
 705                                                         wp->wa_tid = 0;
 706                                                         task_cleanup(tp2);
 707                                                         task_free(tp2);
 708                                                 }
 709                                         }
 710                                         break;
 711  
 712                                 case WT_TASKX: 
 713                                         if (wp->wa_tid && wp->wa_mesg) {
 714                                                 sendmessage(wp->wa_mesg);
 715                                                 wp->wa_mesg = 0;
 716                                         }
 717                                         mb_tidy(tp->t_tid);
 718                                         break;
 719  
 720                                 case WT_RESET: 
 721                                         if (wp->wa_tid && wp->wa_mesg) {
 722                                                 sendmessage(wp->wa_mesg);
 723                                                 wp->wa_mesg = 0;
 724                                         }
 725                                         mb_tidy_reset(tp->t_tid);
 726                                         break;
 727  
 728                                 case WT_RECVINFO: 
 729                                         /* clean up pending recvinfo */ 
 730                                         ep = (struct pvmmentry *) wp->wa_spec;
 731                                         if ( ep->me_msg )       /* class name (overload :-Q) */ 
 732                                                 PVM_FREE( ep->me_msg );
 733                                         PVM_FREE( ep );
 734                                         break;
 735  
 736                                 case WT_HOSTA: 
 737                                         break;
 738  
 739                                 default: 
 740                                         pvmlogprintf( 
 741                                                         "task_cleanup() can't deal with wait kind %d\n",
 742                                                         wp->wa_kind);
 743                                         break;
 744                                 }
 745                                 wp2 = wp;
 746                                 wp = wp->wa_rlink;
 747                                 wait_delete(wp2);
 748                                 continue;
 749                         }
 750  
 751         /* waits this task was waiting on */ 
 752  
 753                         if (wp->wa_tid == tp->t_tid) {
 754                                 switch (wp->wa_kind) {
 755  
 756                                 case WT_HOSTF: 
 757                                 case WT_HOSTA: 
 758                                 case WT_TASKX: 
 759                                 case WT_ROUTEA: 
 760                                 case WT_ROUTED: 
 761                                 case WT_TASKSTART: 
 762                                         wp2 = wp;                               /* some kinds we can toss now */ 
 763                                         wp = wp->wa_rlink;
 764                                         wait_delete(wp2);
 765                                         break;
 766  
 767                                 default: 
 768                                         wp->wa_tid = 0;                 /* in case tid gets recycled */ 
 769                                         break;
 770                                 }
 771                         }
 772                 }
 773  
 774                 /* notify the scheduler */ 
 775  
 776                 if ((tp->t_sched)&&(tp->t_schedlmsg!=SM_TASKX)) {
true777                         mp = mesg_new(0);
mp <= 4095778                         mp->m_dst = tp->t_sched;     /* Null Pointer Dereference */
Preconditions
&$unknown_173179 != waitlist
((char*)$param_1)[168] != 0
((char*)$param_1)[172] != -2147221493
((char*)$param_1)[32] != 0
((char*)&((char*)$unknown_173179)[56])[40] <= 1
waitlist->wa_link != waitlist
$unknown_173179 >= 0
((char*)&$unknown_173179)[20] = 12
((char*)&$unknown_173179)[40] >= 0
Postconditions
((char*)&((char*)((char*)$unknown_173179)[56])[24])[40]' = ((char*)&((char*)((char*)$unknown_173179)[56])[24])[40] - 1
((char*)&((char*)$unknown_173179)[56])[40]' = ((char*)&((char*)$unknown_173179)[56])[40] - 1
((char*)$unknown_173179)[56]' = &freepmsgs.m_link
$unknown_173179' is freed
freepmsgs.m_link' = &freepmsgs.m_link
freepmsgs.m_rlink' = &freepmsgs.m_link
mp' = 0
numpmsgs' = 0
tp' = $param_1
wp' = waitlist
wp2' = &$unknown_173179




Change Warning 2487.2516 : Null Pointer Dereference

Priority:
State:
Finding:
Owner:
Note: