Text  |   XML   |   Visible Warnings:

pvm3.4.6 : pvm3.4.6 analysis 2 : Unreachable Call  at lpvm.c:2827

Categories: LANG.STRUCT.UC CWE:561
Warning ID: 328.29007
Procedure: mksocs
Trace: view
Modified: Thu Nov 26 11:29:30 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
  /kat0/fletcher/SATE/2010/pvm3/src/lpvm.c
  Enter mksocs
2792 mksocs() 
2793 {
2794         char buf[128];
2795 #ifndef WIN32 
2796         int d;
2797 #else 
2798         HANDLE d; 
2799 #endif 
2800  
2801 #ifdef SOCKLENISUINT 
2802 #if defined(IMA_AIX4SP2) || defined(IMA_AIX5SP2)
  ...
2807 #else 
2808         int oslen;
2809 #endif 
2810         int n;
2811         int try;
2812         char *p;
2813 #ifndef NOUNIXDOM 
2814         struct sockaddr_un uns;
2815 #endif 
2816  
2817         if (topvmd)
2818                 return 0;
2819  
2820         /*
2821         * get addr of pvmd, make socket to talk.
2822         * first try envar PVMSOCK, then try sockaddr file.
2823         */ 
2824  
2825         if (!(p = getenv("PVMSOCK"))) {
2826                 if (!(p = pvmdsockfile())) {   /* Redundant Condition (ID: 327.29006) */
2827                         pvmlogerror("mksocs() pvmdsockfile() failed\n");     /* Unreachable Call */
2828                         goto bail;
2829                 }
2830 #ifndef WIN32 
2831                 if ((d = open(p, O_RDONLY, 0)) == -1) {
2832 #else  
2833                 d = win32_open_file(p);
2834                 if (d == (HANDLE) -2) {
2835                         system_loser_win=TRUE;
2836                         d = (HANDLE) _open(p,O_RDONLY,0);
2837                 }
2838                 if (d== (HANDLE) -1) { 
2839 #endif 
2840                         pvmlogperror(p);
2841                         goto bail;
2842                 }
2843 #ifdef WIN32 
2844                 if (!system_loser_win) {
2845                         n = win32_read_file(d,buf,sizeof(buf));
2846                         win32_close_file(d);
2847                 }
2848                 else  {
2849                         n = (int)_read((int)d, (void *)buf, (unsigned int)sizeof(buf));
2850                         (void)_close((int)d);
2851                 } 
2852 #else 
2853                 n = read(d, buf, sizeof(buf));
2854                 (void)close(d);
2855 #endif 
2856                 if (n == -1) {
2857                         pvmlogperror("mksocs() read addr file");
2858                         goto bail;
2859                 }
2860                 if (n == 0) {
2861                         pvmlogerror("mksocs() read addr file: wrong length read\n");
2862                         goto bail;
2863                 }
2864                 buf[n] = 0;   /* Buffer Overrun (ID: 331.29010) */
2865                 p = buf;
2866         }
2867  
2868         FD_ZERO(&pvmrfds);
2869 /*
2870         FD_ZERO(&pvmwfds);
2871 */ 
2872         pvmnfds = 0;
2873  
2874         topvmd = ttpcb_new();
2875         topvmd->tt_tid = TIDPVMD;   /* Null Pointer Dereference (ID: 330.29008) */
2876  
2877         if (p[0] == '/') {
2878 #ifdef NOUNIXDOM 
2879                 pvmlogerror("mksocs() no support for Unix domain socket\n");
2880                 goto bail; 
2881  
2882 #else /*NOUNIXDOM*/ 
2883                 if ((topvmd->tt_fd = socket(AF_UNIX, SOCK_STREAM, 0)) == -1) {
2884                         pvmlogperror("mksocs() socket");
2885                         goto bail;
2886                 }
2887  
2888         /*
2889         * XXX these 2 loops are a hack -
2890         * XXX it keeps too many tasks from overflowing the pvmd listen q.
2891         * XXX maybe the pvmd should make a socket pair for the task instead.
2892         */ 
2893                 try = 5;
2894                 while (1) {
2895                         BZERO((char*)&uns, sizeof(uns));
2896                         uns.sun_family = AF_UNIX;
2897                         strcpy(uns.sun_path, p);   /* Buffer Overrun (ID: 329.29009) */
2898                         n = sizeof(uns);
2899                         if (connect(topvmd->tt_fd, (struct sockaddr*)&uns, n) == -1) {
2900                                 if (--try <= 0) {
2901                                         pvmlogperror("mksocs() connect");
2902                                         pvmlogprintf("\tsocket address tried: %s\n",p);
2903                                         goto bail;
2904                                 }
2905                                 pvmsleep(1);    /* XXX hmm again */ 
2906  
2907                         } else 
2908                                 break;
2909                 }
2910 #endif /*NOUNIXDOM*/ 
2911  
2912         } else {
2913                 if ((topvmd->tt_fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
2914                         pvmlogperror("mksocs() socket");
2915                         goto bail;
2916                 }
2917  
2918                 try = 5;
2919                 while (1) {     /* goto is at the root of all good programming style */ 
2920                         hex_inadport(p, &topvmd->tt_osad);
2921                         topvmd->tt_osad.sin_family = AF_INET;
2922                         n = sizeof(topvmd->tt_osad);
2923  
2924                         if (connect(topvmd->tt_fd, (struct sockaddr*)&topvmd->tt_osad, n) 
2925                         == -1) {
2926                                 if (--try <= 0) {
2927                                         pvmlogperror("mksocs() connect");
2928                                         pvmlogprintf("\tsocket address tried: %s\n",p);
2929                                         goto bail;
2930                                 }
2931                                 pvmsleep(1);    /* XXX hmm again */ 
2932                         } else 
2933                                 break;
2934                 }
2935  
2936 #ifndef NOSOCKOPT 
2937 #ifdef WIN32 
2938                 d = (HANDLE)1; 
2939 #else 
2940                 d = 1;
2941 #endif 
2942                 if (setsockopt(topvmd->tt_fd, IPPROTO_TCP, TCP_NODELAY, (char*)&d, sizeof(int)) 
2943                 == -1) {
2944                         pvmlogperror("mksocs() setsockopt");
2945                         goto bail;
2946                 }
2947 #endif 
2948                 oslen = sizeof(topvmd->tt_sad);
2949                 if (getsockname(topvmd->tt_fd, (struct sockaddr*)&topvmd->tt_sad, &oslen) == -1) {
2950                         pvmlogperror("mksocs() getsockname");
2951                         goto bail;
2952                 }
2953         }
2954  
2955         topvmd->tt_state = TTOPEN;
2956         pvm_fd_add(topvmd->tt_fd, 1);
2957  
2958         return 0;
2959  
2960 bail: 
2961         if (topvmd)
2962                 ttpcb_delete(topvmd);
2963         topvmd = 0;
2964         return PvmSysErr;
2965 } 




Change Warning 328.29007 : Unreachable Call

Priority:
State:
Finding:
Owner:
Note: