Text  |   XML   |   Visible Warnings:

pvm3.4.6 : pvm3.4.6 analysis 2 : Integer Overflow of Allocation Size  at trccompat.c:445

Categories: ALLOC.IOAS BSI:MALLOC-OVERFLOW CWE:680
Warning ID: 22150.29150
Procedure: trc_store_old_trace_event
Trace: view
Modified: Thu Nov 26 11:35:10 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
   /kat0/fletcher/SATE/2010/pvm3/tracer/trccompat.c
   Enter trc_store_old_trace_event
 121 trc_store_old_trace_event( ID, tsec, tusec, tid, eid ) 
 122 TRC_ID ID;
 123 int tsec;
 124 int tusec;
 125 int tid;
 126 int eid;
 127 {
 128         static int *tids = (int *) NULL;
 129         static int ntids = 0;
 130  
 131         TRC_TEVTASK TT;
   ...
 148         int stid;
 149         int omit;
 150         int len;
 151         int buf;
 152         int num;
 153         int cc;
 154         int i;
 155  
 156         /* Set Leftover Event Omit Flag */ 
 157  
 158         TT = trc_get_tevtask_tid( ID, tid );
 159  
 160         omit = ( ID->trace_out == NULL 
 161                 || ( TT != NULL && TRC_TASK_OMIT( TT ) ) ) 
 162                         ? TRC_TRUE : TRC_FALSE;
 163  
 164         /* Initialize Event Counter */ 
 165  
 166         ecnt = 0;
 167  
 168         if ( !omit )
 169         {
 170                 /* Output Trace Event Descriptor (if necessary) */ 
 171  
 172                 if ( !( TRC_OLD_TEV_TRACE[ eid ] ) )
 173                 {
 174                         fprintf( ID->trace_out, "\n" );
 175  
 176                         if ( ID->event_dump_hdr )
 177                                 (ID->event_dump_hdr)( ID, tid );
 178  
 179                         fprintf( ID->trace_out, "#%d: %s\n", eid + 1,
 180                                 TRC_OLD_TRACE_DESCRIPTORS[ eid ] );
 181  
 182                         (TRC_OLD_TEV_TRACE[ eid ])++;
 183                 }
 184  
 185                 /* Update Trace Time */ 
 186  
 187                 trc_update_trace_time( tsec, tusec );
 188  
 189                 /* Output Trace Event Header */ 
 190  
 191                 if ( ID->event_dump_hdr )
 192                         (ID->event_dump_hdr)( ID, tid );
 193  
 194                 fprintf( ID->trace_out, "\"%s\" { %d, %d, %d",
 195                         TRC_OLD_TEV_TRACE_NAMES[ eid ], tsec, tusec, tid );  /* } */ 
 196         }
 197  
 198         /* Convert Trace to Output File */ 
 199  
 200         switch ( eid ) 
 201         {
 202                 case TRC_OLD_TEV_NEWTASK: 
 203                 {
 204                         if ( omit )
 205                                 break;
 206  
 207                         pvm_upkint( &ptid, 1, 1 );
 208                         pvm_upkint( &flags, 1, 1 );
 209                         pvm_upkstr( name );
 210  
   ...
 414                                 break;
 415  
 416                         pvm_upkint( &dtid, 1, 1 );
 417                         pvm_upkint( &msgtag, 1, 1 );
 418  
 419                         fprintf( ID->trace_out, ", %d, %d", dtid, msgtag );   /* Uninitialized Variable (ID: 22152.29159) */
 420  
 421                         break;
 422                 }
 423  
 424                 case TRC_OLD_TEV_MCAST0: 
 425                 {
 426                         if ( omit )
 427                                 break;
 428  
 429                         pvm_upkint( &num, 1, 1 );
 430                         pvm_upkint( &msgtag, 1, 1 );
 431  
 432                         fprintf( ID->trace_out, ", %d, %d, [%d] {",
 433                                 num, msgtag, num );   /* Uninitialized Variable (ID: 22153.29163) */
 434  
 435                         if ( num > 0 )
 436                         {
 437                                 if ( num > ntids )
 438                                 {
 439                                         ntids = num * 2;
 440  
 441                                         if ( tids != NULL )
 442                                                 free( tids );
 443  
 444                                         tids = (int *) malloc( (unsigned) ntids 
true445                                                 * sizeof(int) );     /* Integer Overflow of Allocation Size */
Preconditions
eid = 46
&$unknown_11457722 >= 1
ID->event_dump_hdr = 0
ID->tevtask_list->tevstatus != 4
ID->tevtask_list->outstatus != 3
ID->tevtask_list->tid = tid
ntids <= &$unknown_11457722 - 1
pvmrbuf != 0
pvmtoplvl != 0
pvmtrc.trctid != pvmmytid
pvmtrc.trctid >= 1
$input_12 = 0
tids != 0
Postconditions
*tids' is freed
TT' = ID->tevtask_list
ecnt' = 0
ntids' = 2 * &$unknown_11457722
num' = &$unknown_11457722
omit' = 0




Change Warning 22150.29150 : Integer Overflow of Allocation Size

Priority:
State:
Finding:
Owner:
Note: