Text   |  XML   |  ReML   |   Visible Warnings:

Unreachable Computation  at capture_if_dlg.c:668

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

capture_if_cb

(/home/sate/Testcases/c/cve/wireshark-1.2.0/gtk/capture_if_dlg.c)expand/collapse
Show more  
 439  capture_if_cb(GtkWidget *w _U_, gpointer d _U_)
 440  {
 441    GtkWidget     *main_vb,
 442                                  *main_sw,
 443                                  *bbox,
 444                                  *close_bt,
 445                                  *help_bt,
 446                                  *icon;
 447   
 448  #ifdef HAVE_AIRPCAP 
 449    GtkWidget             *decryption_cb;
 450  #endif
 451   
 452    GtkWidget     *if_tb;
 453    GtkWidget     *if_lb;
 454    GtkTooltips   *tooltips;
 455    int           err;
 456    gchar         *err_str;
 457    GtkRequisition requisition;
 458    int           row, height;
 459    if_dlg_data_t *if_dlg_data;
 460    int           ifs;
 461    GList         *curr;
 462    if_info_t     *if_info;
 463    GSList        *curr_ip;
 464    if_addr_t     *ip_addr;
 465    GString       *if_tool_str = g_string_new("");
 466    const gchar   *addr_str;
 467    gchar         *tmp_str;
 468    gchar         *user_descr;
 469    if_stat_cache_t *sc;
 470   
 471    if (cap_if_w != NULL) {
 472      /* There's already a "Capture Interfaces" dialog box; reactivate it. */
 473      reactivate_window(cap_if_w);
 474      return;
 475    }
 476   
 477  #ifdef _WIN32 
 478    /* Is WPcap loaded? */
 479    if (!has_wpcap) {
 480      char *detailed_err;
 481   
 482      detailed_err = cant_load_winpcap_err("Wireshark");
 483      simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", detailed_err);
 484      g_free(detailed_err);
 485      return;
 486    }
 487  #endif
 488   
 489    /* LOAD THE INTERFACES */
 490    if_list = capture_interface_list(&err, &err_str);
 491    if_list = g_list_sort (if_list, if_list_comparator_alph);
 492    if (if_list == NULL && err == CANT_GET_INTERFACE_LIST) {
 493      simple_dialog(ESD_TYPE_ERROR, ESD_BTN_OK, "%s", err_str);
 494      g_free(err_str);
 495      return;
 496    }
 497   
 498  #ifdef HAVE_AIRPCAP 
 499    /* LOAD AIRPCAP INTERFACES */
 500    airpcap_if_list = get_airpcap_interface_list(&err, &err_str);
 501    if (airpcap_if_list == NULL)
 502      airpcap_if_active = airpcap_if_selected = NULL;
 503   
 504    decryption_cb = g_object_get_data(G_OBJECT(airpcap_tb),AIRPCAP_TOOLBAR_DECRYPTION_KEY);
 505    update_decryption_mode_list(decryption_cb);
 506
519
Show [ Lines 506 to 519 omitted. ]
 520      } else {
 521        /* default adapter is not airpcap... or is airpcap but is not found*/
 522        airpcap_set_toolbar_stop_capture(airpcap_if_active);
 523        airpcap_enable_toolbar_widgets(airpcap_tb,FALSE);
 524      }
 525    }
 526   
 527    airpcap_set_toolbar_start_capture(airpcap_if_active);
 528  #endif
 529   
 530    cap_if_w = window_new(GTK_WINDOW_TOPLEVEL, "Wireshark: Capture Interfaces");
 531   
 532    tooltips = gtk_tooltips_new();
 533   
 534    main_sw = gtk_scrolled_window_new(NULL, NULL);
 535    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(main_sw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
 536    gtk_container_add(GTK_CONTAINER(cap_if_w), main_sw);
 537   
 538    main_vb = gtk_vbox_new(FALSE, 0);
 539    gtk_container_set_border_width(GTK_CONTAINER(main_vb), 5);
 540    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(main_sw), main_vb);
 541   
 542   
 543    if_tb = gtk_table_new(1,9, FALSE);
 544    gtk_table_set_row_spacings(GTK_TABLE(if_tb), 3);
 545    gtk_table_set_col_spacings(GTK_TABLE(if_tb), 3);
 546    gtk_box_pack_start(GTK_BOX(main_vb), if_tb, FALSE, FALSE, 0);
 547   
 548    row = 0;
 549    height = 0;
 550   
 551    /* This is the icon column, used to display which kind of interface we have */
 552    if_lb = gtk_label_new("");
 553    gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 0, 1, row, row+1);
 554   
 555  #ifndef _WIN32 
 556    /*
 557     * On Windows, device names are generally not meaningful - NT 5
 558     * uses long blobs with GUIDs in them, for example - so we don't
 559     * bother showing them.
 560     */
 561    if_lb = gtk_label_new("Device");
 562    gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 1, 2, row, row+1);
 563  #endif
 564   
 565    if_lb = gtk_label_new("Description");
 566    gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 2, 3, row, row+1);
 567   
 568    if_lb = gtk_label_new(" IP ");
 569    gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 3, 4, row, row+1);
 570   
 571    if_lb = gtk_label_new("Packets");
 572    gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 4, 5, row, row+1);
 573   
 574    if_lb = gtk_label_new(" Packets/s ");
 575    gtk_table_attach_defaults(GTK_TABLE(if_tb), if_lb, 5, 6, row, row+1);
 576   
 577    stop_bt = gtk_button_new_from_stock(WIRESHARK_STOCK_CAPTURE_STOP);
 578    gtk_tooltips_set_tip(tooltips, stop_bt,
 579            "Stop a running capture.", NULL);
 580  #ifdef _WIN32 
 581    gtk_table_attach_defaults(GTK_TABLE(if_tb), stop_bt, 6, 9, row, row+1);
 582  #else
 583    gtk_table_attach_defaults(GTK_TABLE(if_tb), stop_bt, 6, 8, row, row+1);
 584  #endif
 585    g_signal_connect(stop_bt, "clicked", G_CALLBACK(capture_stop_cb), NULL);
 586   
 587    row++;
 588    gtk_widget_size_request(stop_bt, &requisition);
 589    height += requisition.height + 15;
 590   
 591    /* Start gathering statistics (using dumpcap) */
 592    sc = capture_stat_start(if_list);
 593   
 594    /* List the interfaces */
 595    for(ifs = 0; (curr = g_list_nth(if_list, ifs)); ifs++) {
 596        g_string_assign(if_tool_str, "");
 597        if_info = curr->data;
 598   
 599        /* Continue if capture device is hidden */
 600        if (prefs_is_capture_device_hidden(if_info->name)) {
 601            continue;
 602        }
 603   
 604        if_dlg_data = g_malloc0(sizeof(if_dlg_data_t));
 605        if_dlg_data->if_info = *if_info;
 606   
 607        /* Kind of adaptor (icon) */
 608  #ifdef HAVE_AIRPCAP 
 609        if(get_airpcap_if_from_name(airpcap_if_list,if_info->name) != NULL)
 610          icon = xpm_to_widget(capture_airpcap_16_xpm);
 611        else 
 612          icon = capture_get_if_icon(if_info);
 613  #else
 614        icon = capture_get_if_icon(if_info);
 615  #endif
 616   
 617        gtk_table_attach_defaults(GTK_TABLE(if_tb), icon, 0, 1, row, row+1);
 618   
 619        /* device name */
 620        if_dlg_data->device_lb = gtk_label_new(if_info->name);
 621        if_dlg_data->device = if_info->name;
 622  #ifndef _WIN32 
 623        gtk_misc_set_alignment(GTK_MISC(if_dlg_data->device_lb), 0.0f, 0.5f);
 624        gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->device_lb, 1, 2, row, row+1);
 625  #endif
 626        g_string_append(if_tool_str, "Device: ");
 627        g_string_append(if_tool_str, if_info->name);
 628        g_string_append(if_tool_str, "\n");
 629   
 630        /* description */
 631        user_descr = capture_dev_user_descr_find(if_info->name);
 632        if (user_descr) {
 633          if_dlg_data->descr_lb = gtk_label_new(user_descr);
 634          g_free (user_descr);
 635        } else {
 636          if (if_info->description)
 637            if_dlg_data->descr_lb = gtk_label_new(if_info->description);
 638          else 
 639            if_dlg_data->descr_lb = gtk_label_new("");
 640        }
 641        gtk_misc_set_alignment(GTK_MISC(if_dlg_data->descr_lb), 0.0f, 0.5f);
 642        gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->descr_lb, 2, 3, row, row+1);
 643   
 644        if (if_info->description) {
 645          g_string_append(if_tool_str, "Description: ");
 646          g_string_append(if_tool_str, if_info->description);
 647          g_string_append(if_tool_str, "\n");
 648        }
 649   
 650        /* IP address */
 651        /* only the first IP address will be shown */
 652        g_string_append(if_tool_str, "IP: ");
 653        curr_ip = g_slist_nth(if_info->ip_addr, 0);
 654        if(curr_ip) {
 655          ip_addr = (if_addr_t *)curr_ip->data;
 656          switch (ip_addr->type) {
 657   
 658          case AT_IPv4:
 659            addr_str = ip_to_str((guint8 *)&ip_addr->ip_addr.ip4_addr);
 660            break;
 661   
 662          case AT_IPv6:
 663            addr_str = ip6_to_str((struct e_in6_addr *)&ip_addr->ip_addr.ip6_addr);
 664            break;
 665   
 666          default:
 667            g_assert_not_reached();
 668            addr_str = NULL;
 669          }
 670          if_dlg_data->ip_lb = gtk_label_new(addr_str);
 671          gtk_widget_set_sensitive(if_dlg_data->ip_lb, TRUE);
 672          g_string_append(if_tool_str, addr_str);
 673        } else {
 674          if_dlg_data->ip_lb = gtk_label_new("unknown");
 675          gtk_widget_set_sensitive(if_dlg_data->ip_lb, FALSE);
 676          g_string_append(if_tool_str, "unknown");
 677        }
 678        gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->ip_lb, 3, 4, row, row+1);
 679        g_string_append(if_tool_str, "\n");
 680   
 681        /* packets */
 682        if_dlg_data->curr_lb = gtk_label_new("-");
 683        gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->curr_lb, 4, 5, row, row+1);
 684   
 685        /* packets/s */
 686        if_dlg_data->last_lb = gtk_label_new("-");
 687        gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->last_lb, 5, 6, row, row+1);
 688   
 689        /* capture button */
 690        if_dlg_data->capture_bt = gtk_button_new_from_stock(WIRESHARK_STOCK_CAPTURE_START);
 691            g_signal_connect(if_dlg_data->capture_bt, "clicked", G_CALLBACK(capture_do_cb), if_dlg_data);
 692        tmp_str = g_strdup_printf("Immediately start a capture from this interface:\n\n%s", if_tool_str->str);
 693        gtk_tooltips_set_tip(tooltips, if_dlg_data->capture_bt,
 694            tmp_str, NULL);
 695        g_free(tmp_str);
 696        gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->capture_bt, 6, 7, row, row+1);
 697   
 698        /* prepare button */
 699        if_dlg_data->prepare_bt = gtk_button_new_from_stock(WIRESHARK_STOCK_CAPTURE_OPTIONS);
 700        g_signal_connect(if_dlg_data->prepare_bt, "clicked", G_CALLBACK(capture_prepare_cb), if_dlg_data);
 701        gtk_tooltips_set_tip(tooltips, if_dlg_data->prepare_bt,
 702            "Open the capture options dialog with this interface selected.", NULL);
 703        gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->prepare_bt, 7, 8, row, row+1);
 704   
 705        /* details button */
 706  #ifdef _WIN32 
 707        if_dlg_data->details_bt = gtk_button_new_from_stock(WIRESHARK_STOCK_CAPTURE_DETAILS);
 708        gtk_tooltips_set_tip(tooltips, if_dlg_data->details_bt,
 709            "Open the capture details dialog of this interface.", NULL);
 710        gtk_table_attach_defaults(GTK_TABLE(if_tb), if_dlg_data->details_bt, 8, 9, row, row+1);
 711        if (capture_if_has_details(if_dlg_data->device)) {
 712          g_signal_connect(if_dlg_data->details_bt, "clicked", G_CALLBACK(capture_details_cb), if_dlg_data);
 713        } else {
 714          gtk_widget_set_sensitive(if_dlg_data->details_bt, FALSE);
 715        }
 716  #endif
 717   
 718        if_data = g_list_append(if_data, if_dlg_data);
 719   
 720        row++;
 721        if (row <= 10) {
 722            /* Lets add up 10 rows of interfaces, otherwise the window may become too high */
 723            gtk_widget_size_request(GTK_WIDGET(if_dlg_data->prepare_bt), &requisition);
 724            height += requisition.height;
 725        }
 726    }
 727   
 728    g_string_free(if_tool_str, TRUE);
 729   
 730    /* Button row: close and help button */
 731    bbox = dlg_button_row_new(GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL);
 732    gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 5);
 733   
 734    close_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_CLOSE);
 735    window_set_cancel_button(cap_if_w, close_bt, window_cancel_button_cb);
 736    gtk_tooltips_set_tip(tooltips, close_bt, "Close this window.", NULL);
 737   
 738    help_bt = g_object_get_data(G_OBJECT(bbox), GTK_STOCK_HELP);
 739    g_signal_connect(help_bt, "clicked", G_CALLBACK(topic_cb), (gpointer)(HELP_CAPTURE_INTERFACES_DIALOG));
 740   
 741    gtk_widget_size_request(GTK_WIDGET(close_bt), &requisition);
 742    /* height + static offset + what the GTK MS Windows Engine needs in addition per interface */
 743    height += requisition.height + 20 + ifs;
 744    gtk_window_set_default_size(GTK_WINDOW(cap_if_w), -1, height);
 745   
 746    gtk_widget_grab_default(close_bt);
 747   
 748    g_signal_connect(cap_if_w, "delete_event", G_CALLBACK(window_delete_event_cb), NULL);
 749    g_signal_connect(cap_if_w, "destroy", G_CALLBACK(capture_if_destroy_cb), sc);
 750   
 751    gtk_widget_show_all(cap_if_w);
 752    window_present(cap_if_w);
 753   
 754    set_capture_if_dialog_for_capture_in_progress(g_capture_in_progress);
 755   
 756      /* update the interface list every 1000ms */
 757    timer_id = g_timeout_add(1000, update_all, sc);
 758  }
Show more  




Change Warning 3998.30723 : Unreachable Computation

Priority:
State:
Finding:
Owner:
Note: