• Jiri Popelka's avatar
    Possible problems found by static analysis of code. · 6ccabd57
    Jiri Popelka authored
    We analyzed the net-tools-1.60 code with Coverity.
    Coverity is commercial enterprise level tool for
    static analysis (analysis based only on compiling
    of sources, not based on running of binary) of the code.
    
    This change should fix some possible problems like resource (memory,
    file descriptors) leaks.
    
    Follow respective parts of the scan log. The line
    numbers could be quite different as we analyzed Red Hat's
    heavily patched version of net-tools-1.60.
    
    Error: RESOURCE_LEAK
    ipmaddr.c:191: alloc_fn: Calling allocation function "malloc".
    ipmaddr.c:191: var_assign: Assigning: "ma" =  storage returned from "malloc(sizeof (m) /*64*/)".
    ipmaddr.c:203: overwrite_var: Overwriting "ma" in call "ma = malloc(sizeof (m) /*64*/)" leaks the storage that "ma" points to.
    
    Error: RESOURCE_LEAK
    iptunnel.c:473: alloc_fn: Calling allocation function "fopen".
    iptunnel.c:473: var_assign: Assigning: "fp" =  storage returned from "fopen("/proc/net/dev", "r")".
    iptunnel.c:488: leaked_storage: Variable "fp" going out of scope leaks the storage it points to.
    iptunnel.c:524: leaked_storage: Variable "fp" going out of scope leaks the storage it points to.
    
    Error: FORWARD_NULL
    lib/inet.c:408: var_compare_op: Comparing "item" to null implies that "item" might be null.
    lib/inet.c:410: var_deref_op: Dereferencing null variable "item".
    
    Error: RESOURCE_LEAK
    lib/masq_info.c:174: alloc_fn: Calling allocation function "malloc".
    lib/masq_info.c:174: var_assign: Assigning: "mslist" =  storage returned from "malloc(1152UL)".
    lib/masq_info.c:215: leaked_storage: Variable "mslist" going out of scope leaks the storage it points to.
    
    Error: RESOURCE_LEAK
    lib/netrom_gr.c:35: alloc_fn: Calling allocation function "fopen".
    lib/netrom_gr.c:35: var_assign: Assigning: "f1" =  storage returned from "fopen("/proc/net/nr_nodes", "r")".
    lib/netrom_gr.c:42: overwrite_var: Overwriting "f1" in call "f1 = fopen("/proc/net/nr_nodes", "r")" leaks the storage that "f1" points to.
    
    Error: RESOURCE_LEAK
    lib/netrom_gr.c:36: alloc_fn: Calling allocation function "fopen".
    lib/netrom_gr.c:36: var_assign: Assigning: "f2" =  storage returned from "fopen("/proc/net/nr_neigh", "r")".
    lib/netrom_gr.c:44: overwrite_var: Overwriting "f2" in call "f2 = fopen("/proc/net/nr_neigh", "r")" leaks the storage that "f2" points to
    
    Error: FORWARD_NULL
    lib/x25.c:101: var_compare_op: Comparing "p" to null implies that "p" might be null.
    lib/x25.c:109: var_deref_op: Dereferencing null variable "p".
    
    Error: RESOURCE_LEAK
    nameif.c:166: alloc_fn: Calling allocation function "xmalloc".
    nameif.c:166: var_assign: Assigning: "ch" =  storage returned from "xmalloc(sizeof (struct change) /*40*/)".
    nameif.c:177: leaked_storage: Variable "ch" going out of scope leaks the storage it points to.
    
    Error: NEGATIVE_RETURNS
    netstat.c:463: negative_return_fn: Function "readlink(line, lname, 29UL)" returns a negative number.
    netstat.c:463: var_assign: Assigning: signed variable "lnamelen" = "readlink".
    netstat.c:464: negative_returns: Using variable "lnamelen" as an index to array "lname".
    
    Error: RESOURCE_LEAK
    netstat.c:894: alloc_fn: Calling allocation function "fopen".
    netstat.c:894: var_assign: Assigning: "f" =  storage returned from "fopen("/proc/net/x25", "r")".
    netstat.c:905: overwrite_var: Overwriting "f" in call "f = fopen("/proc/net/x25", "r")" leaks the storage that "f" points to.
    
    Error: RESOURCE_LEAK
    netstat.c:1916: alloc_fn: Calling allocation function "fopen".
    netstat.c:1916: var_assign: Assigning: "f" =  storage returned from "fopen("/proc/net/ipx", "r")".
    netstat.c:1934: leaked_storage: Variable "f" going out of scope leaks the storage it points to.
    netstat.c:1947: leaked_storage: Variable "f" going out of scope leaks the storage it points to.
    netstat.c:1957: leaked_storage: Variable "f" going out of scope leaks the storage it points to.
    6ccabd57
inet.c 10.7 KB