Text  |   XML   |   Visible Warnings:

pvm3.4.6 : pvm3.4.6 analysis 2 : Uninitialized Variable  at ddpro.c:1008

Categories: LANG.MEM.UVAR CWE:457
Warning ID: 22049.28720
Procedure: addhosts
Trace: view
Modified: Thu Nov 26 11:27:35 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/src/ddpro.c
   Enter addhosts
 840 addhosts(mp, rmp) 
 841         struct pmsg *mp;        /* the request message */ 
 842         struct pmsg *rmp;       /* reply message blank */ 
 843 {
 844         struct hostd *hp, *hp2;
 845         struct pmsg *mp2;
 846         struct waitc *wp = 0;
 847         struct waitc_add *wxp = 0;
 848         int i, j;
 849         int count;
 850         int ngood;
 851         int ntid;
 852         struct hostent *he;
 853         int maxhostid = (tidhmask >> ffs(tidhmask) - 1);
 854         int hh;
 855         int pid;
 856         int *tids;
 857         char *winpvmdpath;
 858         char *pvmdpath;
 859         char *vmid;
 860         char *buf;
 861         int len;
 862  
 863         /*
 864         * have to lock this for 2 reasons:
 865         *  1. system can't handle overlapping host table updates,
 866         *  2. the new host tids aren't reserved 
 867         */ 
 868         if (busyadding) {
 869 /*
 870                 pvmlogerror("addhosts() already adding new hosts\n");
 871 */ 
 872                 pkint(rmp, PvmAlready);
 873                 sendmessage(rmp);
 874                 return 0;
 875         }
 876  
 877         busyadding = 1;
 878  
 879         /* sanity check count */ 
 880  
 881         if (upkint(mp, &count) || count < 1 || count > maxhostid) {
 882                 pvmlogerror("addhosts() bad msg format\n");
 883                 goto bad;
 884         }
 885  
 886         /*
 887         * make wait context, extract host list from message,
 888         */ 
 889  
 890         wp = wait_new(WT_HOSTSTART);
 891         wp->wa_tid = mp->m_src;
 892         wp->wa_dep = mp->m_wid;
 893         wxp = TALLOC(1, struct waitc_add, "waix");
 894         wxp->w_num = count;   /* Null Pointer Dereference (ID: 22059.28730) */
 895         wxp->w_hosts = TALLOC(count, struct hostd *, "waiv");   /* Integer Overflow of Allocation Size (ID: 22058.28729) */
 896         BZERO((char*)wxp->w_hosts, count * sizeof(struct hostd *));   /* Null Pointer Dereference (ID: 22057.28728) */
 897         wp->wa_spec = (void *)wxp;
 898  
 899         for (i = 0; i < count; i++) {
 900                 hp = hd_new(0);
 901                 wxp->w_hosts[i] = hp;
 902                 if (upkstralloc(mp, &buf)) {
 903                         pvmlogerror("addhosts() bad msg format\n");
 904                         goto bad;
 905                 }
 906                 if (parsehost(buf, hp)) {
 907                         hp->hd_err = PvmBadParam;   /* Null Pointer Dereference (ID: 22054.28725) */
 908  
 909                 } else {
 910  
 911                 /* Set unspecified fields from hostfile if available */ 
 912  
 913                         if (filehosts &&
 914                                         ((hp2 = nametohost(filehosts, hp->hd_name))   /* Null Pointer Dereference (ID: 22053.28724) */
 915                                         || (hp2 = filehosts->ht_hosts[0])))
 916                                 applydefaults(hp, hp2);
 917                 }
 918                 PVM_FREE(buf);
 919         }
 920  
 921         /*
 922         * verify we have a chance to add these babies...
 923         * check whether our IP is "real" or just loopback 
 924         */ 
 925  
 926         hp = hosts->ht_hosts[hosts->ht_local];
 927  
 928         if ( hp->hd_sad.sin_addr.s_addr == htonl(0x7f000001) ) {
 929  
 930                 /* damn, we're hosed.  bail on host adds with new */ 
 931                 /* PvmIPLoopback error code... */ 
 932  
 933                 for (i = 0; i < count; i++) {
 934                         hp = wxp->w_hosts[i];
 935                         if (hp->hd_err)
 936                                 continue;
 937                         hp->hd_err = PvmIPLoopback;
 938                 }
 939         }
 940  
 941         /*
 942         * lookup IP addresses  XXX we already have some of them 
 943         */ 
 944  
 945         ngood = 0;
 946         for (i = 0; i < count; i++) {
 947                 hp = wxp->w_hosts[i];
 948                 if (hp->hd_err)
 949                         continue;
 950  
 951                 if (he = gethostbyname(hp->hd_aname ? hp->hd_aname : hp->hd_name)) {
 952                         BCOPY(he->h_addr_list[0], (char*)&hp->hd_sad.sin_addr,
 953                                         sizeof(struct in_addr));   /* Buffer Overrun (ID: 22052.28723) */
 954  
 955                 } else {
 956                         if (pvmdebmask & PDMSTARTUP) {
 957                                 pvmlogprintf( 
 958                                                 "start_slaves() can't gethostbyname: %s\n",
 959                                                 hp->hd_name);
 960                         }
 961                         hp->hd_err = PvmNoHost;
 962                         continue;
 963                 }
 964  
 965         /* make sure it's not already configured */ 
 966  
 967                 if (!(hp->hd_flag & HF_OVERLOAD)) {
 968                         for (hh = hosts->ht_last; hh > 0; hh--)
 969                                 if ((hp2 = hosts->ht_hosts[hh]) 
 970                                 && (hp2->hd_sad.sin_addr.s_addr == hp->hd_sad.sin_addr.s_addr)) {
 971                                         hp->hd_err = PvmDupHost;
 972                                         break;
 973                                 }
 974                         if (hp->hd_err)
 975                                 continue;
 976  
 977         /* make sure new ones aren't duplicated */ 
 978  
 979                         for (j = i; j-- > 0; )
 980                                 if (hp->hd_sad.sin_addr.s_addr 
 981                                 == wxp->w_hosts[j]->hd_sad.sin_addr.s_addr) {
 982                                         hp->hd_err = PvmDupHost;
 983                                         break;
 984                                 }
 985                         if (hp->hd_err)
 986                                 continue;
 987                 }
 988  
 989                 ngood++;
 990         }
 991  
 992         /*
 993         * assign tids  XXX these are unreserved until hosts are added...
 994         */ 
 995  
 996         ntid = ngood;
true997         tids = TALLOC(ngood, int, "xxx");   /* Integer Overflow of Allocation Size (ID: 22051.28722) */
 998         hostids_new(&ntid, tids);
 999         if (ntid < ngood) {
 1000                 pvmlogerror("addhosts() out of hostids\n");
 1001                 ngood = ntid;
 1002         }
 1003         for (j = i = 0; i < count; i++) {
 1004                 hp = wxp->w_hosts[i];
 1005                 if (hp->hd_err)
 1006                         continue;
 1007                 if (j < ntid)
*tids is uninitialized1008                         hp->hd_hostpart = tids[j++];     /* Uninitialized Variable */  /* Null Pointer Dereference (ID: 22048.28719) */
 1009                 else 
 1010                         hp->hd_err = PvmOutOfRes;
Preconditions
&$unknown_365093 >= 3
&$unknown_365096 >= 1
&$unknown_365103 >= 1
hosts->ht_last >= 2
((char*)&$unknown_365099)[116] != 0
((char*)&$unknown_365105)[48] = 0
busyadding = 0
filehosts = 0
$heap_45990 != 0
strlen(&$heap_45990) != 0
$input_12 >= 0
$input_8476 >= 0
$input_8500 >= 0
Postconditions
__x' = 2130706433
atnewline' = 1
buf' = &$heap_45990
busyadding' = 1
count' = &$unknown_365093
he' = &$heap_45993
bytes_after(&$heap_45982)' = 48
$heap_45982' is allocated by malloc
$heap_45982' is allocated
bytes_before(&$heap_45982)' = 0
((char*)&$heap_45982)[16]' = 0
((char*)&$heap_45982)[36]' = 0
((char*)&$heap_45982)[40]' = 0
((char*)&$heap_45982)[44]' = &$heap_45983
((char*)&$heap_45982)[12]' = 3
$heap_45983' = &$unknown_365093
bytes_after(&$heap_45983)' = 8
$heap_45983' is allocated by malloc
$heap_45983' is allocated
bytes_before(&$heap_45983)' = 0
((char*)&$heap_45983)[4]' = &$heap_45984
$heap_45984' = 0
bytes_after(&$heap_45984)' = 4 * &$unknown_365093
$heap_45984' is allocated by malloc
$heap_45984' is allocated
bytes_before(&$heap_45984)' = 0
$heap_45986' = &$heap_45986
bytes_after(&$heap_45986)' = 120
$heap_45986' is allocated by malloc
$heap_45986' is allocated
bytes_before(&$heap_45986)' = 0
((char*)&$heap_45986)[16]' = 0
((char*)&$heap_45986)[20]' = 0
((char*)&$heap_45986)[4]' = &$heap_45986
((char*)&$heap_45986)[8]' = 0
((char*)&$heap_45986)[116]' = 0
((char*)&$heap_45986)[12]' = 0
$heap_45987' = &$heap_45987
bytes_after(&$heap_45987)' = 120
$heap_45987' is allocated by malloc
$heap_45987' is allocated
bytes_before(&$heap_45987)' = 0
((char*)&$heap_45987)[16]' = 0
((char*)&$heap_45987)[20]' = 0
((char*)&$heap_45987)[4]' = &$heap_45987
((char*)&$heap_45987)[8]' = 0
((char*)&$heap_45987)[116]' = 0
((char*)&$heap_45987)[12]' = 0
bytes_after(&$heap_45988)' = 120
$heap_45988' is allocated by malloc
$heap_45988' is allocated
bytes_before(&$heap_45988)' = 0
((char*)&$heap_45988)[16]' = 0
((char*)&$heap_45988)[20]' = 0
((char*)&$heap_45988)[8]' = 0
((char*)&$heap_45988)[116]' = 0
((char*)&$heap_45988)[12]' = 0
$heap_45989' = 1
bytes_after(&$heap_45989)' = 124
$heap_45989' is allocated by malloc
bytes_before(&$heap_45989)' = 0
((char*)&$heap_45989)[56]' = 2
((char*)&$heap_45989)[72]' = 1
((char*)&$heap_45989)[76]' = 1
((char*)&$heap_45989)[80]' = &$heap_45986
((char*)&$heap_45989)[84]' = &$heap_45987
((char*)&$heap_45989)[92]' = &$heap_45988
((char*)&$heap_45989)[100]' = 1
((char*)&$heap_45989)[112]' = 0
bytes_after(&$heap_45990)' = &$unknown_365096
$heap_45990' is allocated by malloc
$heap_45990' is freed
bytes_before(&$heap_45990)' = 0
$heap_45991' = &$heap_45992
$heap_45991' is a non-heap object
bytes_before(&$heap_45991)' = 0
$heap_45992' = $input_8484
bytes_after(&$heap_45992)' = $input_8476 + 1
$heap_45992' is allocated by malloc
$heap_45992' is a non-heap object
bytes_before(&$heap_45992)' = 0
strlen(&$heap_45992)' = $input_8476
$heap_45993' = &$heap_45994
bytes_after(&$heap_45993)' = 1024
$heap_45993' is a non-heap object
bytes_before(&$heap_45993)' = 0
((char*)&$heap_45993)[16]' = &$heap_45996
((char*)&$heap_45993)[4]' = &$heap_45991
$heap_45994' = $input_444
bytes_after(&$heap_45994)' = $input_12 + 1
$heap_45994' is allocated by malloc
$heap_45994' is a non-heap object
bytes_before(&$heap_45994)' = 0
strlen(&$heap_45994)' = $input_12
$heap_45995' = $input_8508
bytes_after(&$heap_45995)' = $input_8500 + 1
$heap_45995' is allocated by malloc
$heap_45995' is a non-heap object
bytes_before(&$heap_45995)' = 0
strlen(&$heap_45995)' = $input_8500
$heap_45996' = &$heap_45995
$heap_45996' is a non-heap object
bytes_before(&$heap_45996)' = 0
bytes_after(&$heap_45997)' = 4 * &$unknown_365103
$heap_45997' is allocated by malloc
$heap_45997' is allocated
bytes_before(&$heap_45997)' = 0
hh' = 0
hp' = &$unknown_365105
hp2' = 0
i' = &$unknown_365093 - 2
last_rv' = &$heap_45993
maxhostid' >= 3
maxhostid' >= &$unknown_365093
ngood' = 0
ntid' = 0
tids' = &$heap_45997
tmbuf.tm_sec' = &$unknown_365104
wp' = &$heap_45982
wxp' = &$heap_45983




Change Warning 22049.28720 : Uninitialized Variable

Priority:
State:
Finding:
Owner:
Note: