Text  |   XML   |   Visible Warnings:

Pvm : Pvm analysis 1 : Null Test After Dereference  at trcmess.c:892

Categories: LANG.STRUCT.NTAD
Warning ID: 2866.2932
Procedure: trc_handle_output_message
Trace: View
Modified: Wed Sep 2 12:51:21 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     
LineSource
  /u1/paul/SATE/2010/c/pvm/pvm3/tracer/trcmess.c
  Enter trc_handle_output_message
791 trc_handle_output_message( ID ) 
792 TRC_ID ID;
793 {
794         TRC_TEVTASK TT;
795  
796         char tmp[255];
797         char msg[255];
798  
799         char *output;
800  
801         int ecnt;
802         int omit;
803         int len;
804         int tid;
805  
806         ecnt = 0;
807  
808         TRC_PVMCKERR( pvm_upkint( &tid, 1, 1 ),
809                 "Error Unpacking Output Message", return( ecnt ) );
810  
811         TRC_PVMCKERR( pvm_upkint( &len, 1, 1 ),
812                 "Error Unpacking Output Length", return( ecnt ) );
813  
814         /* Set Leftover Event Omit Flag */ 
815  
816         TT = trc_get_tevtask_tid( ID, tid );   /* Uninitialized Variable (ID: 2868.2934) */
817  
818         omit = ( ID->trace_out == NULL 
819                 || ( TT != NULL && TRC_TASK_OMIT( TT ) ) ) 
820                         ? TRC_TRUE : TRC_FALSE;
821  
822         /* Unpack Output */ 
823  
824         if ( len > 0 )   /* Uninitialized Variable (ID: 2867.2933) */
825         {
826                 output = (char *) malloc( (unsigned) ( len + 1 ) 
827                         * sizeof(char) );
828                 trc_memcheck( output, "PVM Output String);
829  
830                 TRC_PVMCKERR( pvm_upkbyte( output, len, 1 ),
831                         "Error Unpacking Task Output",
832                         free(output); return( ecnt ) );
833  
834                 output[ len ] = '\0';
835  
836                 if ( !omit )
837                         ecnt = trc_store_output_event( ID, tid, output, len );
838  
839                 freeoutput );
840         }
841  
842         else 
843         {
844                 switch ( len ) 
845                 {
846                         case 0
847                         {
848                                 if ( !omit )
849                                 {
850                                         sprintftmp, "GOTEOF\n" );
851  
852                                         ecnt = trc_store_output_event( ID,
853                                                 tid, tmp, strlen(tmp);
854                                 }
855  
856                                 if ( TT != NULL )
857                                 {
858                                         if ( TT->tevstatus == TRC_TASK_ALIVE )
859                                         {
860                                                 TT->outstatus = TRC_TASK_EOF;
861  
862                                                 trc_check_for_dead_host( ID, TT );
863  
864                                                 if ( !trc_tevtasks_alive( ID ) )
865                                                         trc_end_trace( ID );
866                                         }
867  
868                                         else 
869                                                 TT->outstatus = TRC_TASK_EOF;
870                                 }
871  
872                                 else if ( !omit )
873                                 {
874                                         printf
875                                                 "\nWarning: GOTEOF Unknown Task TID=0x%x.\n\n",
876                                                 tid );
877                                 }
878  
879                                 break;
880                         }
881  
882                         case -1
883                         {
884                                 if ( omit )
885                                         break;
886  
887                                 sprintftmp, "GOTSPAWN\n" );
888  
889                                 ecnt = trc_store_output_event( ID,
890                                         tid, tmp, strlen(tmp);
891  
892                                 if ( TT == NULL )     /* Null Test After Dereference */
893                                 {
894                                         sprintfmsg, "Task TID=0x%x Connected to %s",
895                                                 tid, TRC_NAME );
896  
897                                         trc_status_msg( ID, msg );
898  
899                                         TT = trc_create_tevtask();
900  
901                                         TT->tid = tid;
902  
903                                         TT->outstatus = TRC_TASK_OUT;
904                                         TT->tevstatus = TRC_TASK_NOLIFE;
905  
906                                         TT->next = ID->tevtask_list;
907  
908                                         ID->tevtask_list = TT;
909                                 }
910  
911                                 else 
912                                         TT->outstatus = TRC_TASK_OUT;
913  
914                                 break;
915                         }
916  
917                         case -2
918                         {
919                                 if ( omit )
920                                         break;
921  
922                                 sprintftmp, "CREATION\n" );
923  
924                                 ecnt = trc_store_output_event( ID,
925                                         tid, tmp, strlen(tmp);
926  
927                                 if ( TT == NULL )
928                                 {
929                                         sprintfmsg, "Task TID=0x%x Connected to %s",
930                                                 tid, TRC_NAME );
931  
932                                         trc_status_msg( ID, msg );
933  
934                                         TT = trc_create_tevtask();
935  
936                                         TT->tid = tid;
937  
938                                         TT->outstatus = TRC_TASK_OUT;
939                                         TT->tevstatus = TRC_TASK_NOLIFE;
940  
941                                         TT->next = ID->tevtask_list;
942  
943                                         ID->tevtask_list = TT;
944                                 }
945  
946                                 else 
947                                         TT->outstatus = TRC_TASK_OUT;
948  
949                                 break;
950                         }
951  
952                         default
953                         {
954                                 if ( !omit )
955                                 {
956                                         fprintfstderr,
957                                                 "Console: unknown output msg 0x%x?\n", tid );
958                                 }
959                         }
960                 }
961         }
962  
963         return( ecnt );
964 




Change Warning 2866.2932 : Null Test After Dereference

Priority:
State:
Finding:
Owner:
Note: