Text   |  XML   |  ReML   |   Visible Warnings:

Null Test After Dereference  at capture.c:730

No properties have been set. | edit properties
Jump to warning location ↓ warning details...
Show Events | Options

capture_interface_list

(/home/sate/Testcases/c/cve/wireshark-1.2.0/capture.c)expand/collapse
Show more  
 664  GList *
 665  capture_interface_list(int *err, char **err_str)
 666  {
 667      GList     *if_list = NULL;
 668      int        i, j;
 669      gchar     *msg;
 670      gchar    **raw_list, **if_parts, **addr_parts;
 671      gchar     *name;
 672      if_info_t *if_info;
 673      if_addr_t *if_addr;
 674   
 675      g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface List ...");
 676   
 677      /* Try to get our interface list */
 678      *err = sync_interface_list_open(&msg);
 679      if (*err != 0) {
 680          g_log(LOG_DOMAIN_CAPTURE, G_LOG_LEVEL_MESSAGE, "Capture Interface List failed!");
 681          if (err_str) {
 682              *err_str = msg;
 683          } else {
 684              g_free(msg);
 685          }
 686          return NULL;
 687      }
 688   
 689      /* Split our lines */
 690  #ifdef _WIN32 
 691      raw_list = g_strsplit(msg, "\r\n", 0);
 692  #else
 693      raw_list = g_strsplit(msg, "\n", 0);
 694  #endif
 695      g_free(msg);
 696   
 697      for (i = 0; raw_list[i] != NULL; i++) {
 698          if_parts = g_strsplit(raw_list[i], "\t", 4);
 699          if (if_parts[0] == NULL || if_parts[1] == NULL || if_parts[2] == NULL ||
 700                  if_parts[3] == NULL) {
 701              g_strfreev(if_parts);
 702              continue;
 703          }
 704   
 705          /* Number followed by the name, e.g "1. eth0" */
 706          name = strchr(if_parts[0], ' ');
 707          if (name) {
 708              name++;
 709          } else {
 710              g_strfreev(if_parts);
 711              continue;
 712          }
 713   
 714          if_info = g_malloc0(sizeof(if_info_t));
 715          if_info->name = g_strdup(name);
 716          if (strlen(if_parts[1]) > 0)
 717              if_info->description = g_strdup(if_parts[1]);
 718          addr_parts = g_strsplit(if_parts[2], ",", 0);
 719          for (j = 0; addr_parts[j] != NULL; j++) {
 720              if_addr = g_malloc0(sizeof(if_addr_t));
 721              if (inet_pton(AF_INET, addr_parts[j], &if_addr->ip_addr.ip4_addr)) {
 722                  if_addr->type = AT_IPv4;
 723              } else if (inet_pton(AF_INET6, addr_parts[j],
 724                      &if_addr->ip_addr.ip6_addr)) {
 725                  if_addr->type = AT_IPv6;
 726              } else {
 727                  g_free(if_addr);
 728                  if_addr = NULL;
 729              }
 730              if (if_addr) {
 731                  if_info->ip_addr = g_slist_append(if_info->ip_addr, if_addr);
 732              }
 733          }
 734          if (strcmp(if_parts[3], "loopback") == 0)
 735              if_info->loopback = TRUE;
 736          g_strfreev(if_parts);
 737          g_strfreev(addr_parts);
 738          if_list = g_list_append(if_list, if_info);
 739      }
 740      g_strfreev(raw_list);
 741   
 742      /* Check to see if we built a list */
 743      if (if_list == NULL) {
 744          *err = NO_INTERFACES_FOUND;
 745          if (err_str)
 746              *err_str = g_strdup("No interfaces found");
 747      }
 748      return if_list;
 749  }
Show more  




Change Warning 12286.30497 : Null Test After Dereference

Priority:
State:
Finding:
Owner:
Note: