(/home/sate/Testcases/c/cve/wireshark-1.2.0/gtk/filter_utils.c) |
| |
| 40 | | | apply_selected_filter (guint callback_action, char *filter) |
| 41 | | | { |
| 42 | | | int action, type; |
| 43 | | | char *str = NULL; |
Event 1:
str is set to NULL. - Dereferenced later, causing the null pointer dereference.
hide
|
|
| 44 | | | const char *current_filter; |
| 45 | | | |
| 46 | | | action = FILTER_ACTION(callback_action); |
| 47 | | | type = FILTER_ACTYPE(callback_action); |
| 48 | | | |
| 49 | | | current_filter = gtk_entry_get_text(GTK_ENTRY(main_display_filter_widget));
x /usr/include/gtk-2.0/gtk/gtkentry.h |
| |
51 | #define GTK_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY, GtkEntry)) |
| |
x /usr/include/glib-2.0/gobject/gtype.h |
| |
482 | #define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type) (_G_TYPE_CIC ((instance), (g_type), c_type)) |
| |
x /usr/include/glib-2.0/gobject/gtype.h |
| |
1678 | # define _G_TYPE_CIC(ip, gt, ct) \ |
1679 | ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt)) |
| |
x /usr/include/gtk-2.0/gtk/gtkentry.h |
| |
50 | #define GTK_TYPE_ENTRY (gtk_entry_get_type ()) |
| |
|
| 50 | | | |
| 51 | | | switch(type){ |
Event 5:
type evaluates to implicit-default.
hide
|
|
| 52 | | | case ACTYPE_SELECTED: |
| 53 | | | str = g_strdup_printf("%s", filter); |
| 54 | | | break; |
| 55 | | | case ACTYPE_NOT_SELECTED: |
| 56 | | | str = g_strdup_printf("!(%s)", filter); |
| 57 | | | break; |
| 58 | | | case ACTYPE_AND_SELECTED: |
| 59 | | | if ((!current_filter) || (0 == strlen(current_filter))) |
| 60 | | | str = g_strdup_printf("%s", filter); |
| 61 | | | else |
| 62 73 |  | | [ Lines 62 to 73 omitted. ] |
| 74 | | | str = g_strdup_printf("(%s) && !(%s)", current_filter, filter); |
| 75 | | | break; |
| 76 | | | case ACTYPE_OR_NOT_SELECTED: |
| 77 | | | if ((!current_filter) || (0 == strlen(current_filter))) |
| 78 | | | str = g_strdup_printf("!(%s)", filter); |
| 79 | | | else |
| 80 | | | str = g_strdup_printf("(%s) || !(%s)", current_filter, filter); |
| 81 | | | break; |
| 82 | | | } |
| 83 | | | |
| 84 | | | switch(action){ |
Event 6:
action evaluates to 3.
hide
|
|
| 85 | | | case ACTION_MATCH: |
| 86 | | | gtk_entry_set_text(GTK_ENTRY(main_display_filter_widget), str);
x /usr/include/gtk-2.0/gtk/gtkentry.h |
| |
51 | #define GTK_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY, GtkEntry)) |
| |
x /usr/include/glib-2.0/gobject/gtype.h |
| |
482 | #define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type) (_G_TYPE_CIC ((instance), (g_type), c_type)) |
| |
x /usr/include/glib-2.0/gobject/gtype.h |
| |
1678 | # define _G_TYPE_CIC(ip, gt, ct) \ |
1679 | ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt)) |
| |
x /usr/include/gtk-2.0/gtk/gtkentry.h |
| |
50 | #define GTK_TYPE_ENTRY (gtk_entry_get_type ()) |
| |
|
| 87 | | | main_filter_packets(&cfile, str, FALSE); |
| 88 | | | gdk_window_raise(top_level->window); |
| 89 | | | break; |
| 90 | | | case ACTION_PREPARE: |
| 91 | | | gtk_entry_set_text(GTK_ENTRY(main_display_filter_widget), str);
x /usr/include/gtk-2.0/gtk/gtkentry.h |
| |
51 | #define GTK_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_ENTRY, GtkEntry)) |
| |
x /usr/include/glib-2.0/gobject/gtype.h |
| |
482 | #define G_TYPE_CHECK_INSTANCE_CAST(instance, g_type, c_type) (_G_TYPE_CIC ((instance), (g_type), c_type)) |
| |
x /usr/include/glib-2.0/gobject/gtype.h |
| |
1678 | # define _G_TYPE_CIC(ip, gt, ct) \ |
1679 | ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt)) |
| |
x /usr/include/gtk-2.0/gtk/gtkentry.h |
| |
50 | #define GTK_TYPE_ENTRY (gtk_entry_get_type ()) |
| |
|
| 92 | | | break; |
| 93 | | | case ACTION_FIND_FRAME: |
| 94 | | | find_frame_with_filter(str); |
| 95 | | | break; |
| 96 | | | case ACTION_FIND_NEXT: |
| 97 | [+] | | find_previous_next_frame_with_filter(str, FALSE); |
Event 7:
str, which evaluates to NULL, is passed to find_previous_next_frame_with_filter() as the first argument. See related event 1.
hide
|
|
 |
| |