Ticket #1068: calc_usecs_unicast_package_crash_fix.2.diff

File calc_usecs_unicast_package_crash_fix.2.diff, 1.8 kB (added by rozteck@interia.pl, 5 years ago)

This patch adds some NULL pointer checking to alc_usecs_unicast_package preventing from crash under some circumstances. Signed-off-by: Tomasz Rostanski <rozteck@interia.pl>

  • ath_rate/sample/sample.c

    old new  
    552556                 */ 
    553557                return; 
    554558        } 
    555         tt += calc_usecs_unicast_packet(sc, size, sn->rates[ndx0].rix,  
    556                 short_tries-1,  
    557                 MIN(tries0, tries) - 1); 
     559        if (sc != NULL) 
     560                tt += calc_usecs_unicast_packet(sc, size, sn->rates[ndx0].rix,  
     561                        short_tries-1,  
     562                        MIN(tries0, tries) - 1); 
    558563        tries_so_far += tries0; 
    559         if (tries1 && tries0 < tries) { 
     564        if ((tries1) && (tries0 < tries) && (sc != NULL)) { 
    560565                tt += calc_usecs_unicast_packet(sc, size, sn->rates[ndx1].rix,  
    561566                        short_tries - 1,  
    562567                        MIN(tries1 + tries_so_far, tries) - tries_so_far - 1); 
    563568        } 
    564569        tries_so_far += tries1; 
    565570 
    566         if (tries2 && tries0 + tries1 < tries) { 
     571        if ((tries2) && (tries0 + tries1 < tries) && (sc != NULL)) { 
    567572                tt += calc_usecs_unicast_packet(sc, size, sn->rates[ndx2].rix,  
    568573                        short_tries - 1, 
    569574                        MIN(tries2 + tries_so_far, tries) - tries_so_far - 1); 
     
    571576 
    572577        tries_so_far += tries2; 
    573578 
    574         if (tries3 && tries0 + tries1 + tries2 < tries) { 
     579        if ((tries3) && (tries0 + tries1 + tries2 < tries) && (sc != NULL)) { 
    575580                tt += calc_usecs_unicast_packet(sc, size, sn->rates[ndx3].rix,  
    576581                        short_tries - 1,  
    577582                        MIN(tries3 + tries_so_far, tries) - tries_so_far - 1); 
     
    857862                        sn->stats[y][x].packets_acked = 0; 
    858863                        sn->stats[y][x].last_tx = 0; 
    859864 
    860                         sn->stats[y][x].perfect_tx_time =  
    861                                 calc_usecs_unicast_packet(sc, size,  
    862                                         sn->rates[x].rix, 
    863                                         0, 0); 
     865                        if (sc != NULL) 
     866                                sn->stats[y][x].perfect_tx_time =  
     867                                        calc_usecs_unicast_packet(sc, size,  
     868                                                sn->rates[x].rix, 
     869                                                0, 0); 
    864870                        sn->stats[y][x].average_tx_time = 
    865871                                sn->stats[y][x].perfect_tx_time; 
    866872