(/home/sate/Testcases/c/cve/wireshark-1.2.0/gtk/main.c) |
| |
| 2819 | | | console_log_handler(const char *log_domain, GLogLevelFlags log_level, |
| 2820 | | | const char *message, gpointer user_data _U_) |
| 2821 | | | { |
| 2822 | | | time_t curr; |
| 2823 | | | struct tm *today; |
| 2824 | | | const char *level; |
| 2825 | | | |
| 2826 | | | |
| 2827 | | | |
| 2828 | | | |
| 2829 | | | if((log_level & G_LOG_LEVEL_MASK & prefs.console_log_level) == 0 && |
Event 1:
Skipping " if". (log_level & ~(1 << 0 | 1 << 1) & prefs.console_log_level) == 0 evaluates to false.
hide
|
|
| 2830 | | | prefs.console_log_level != 0) { |
| 2831 | | | return; |
| 2832 | | | } |
| 2833 | | | |
| 2834 | | | |
| 2835 | | | time(&curr); |
| 2836 | | | today = localtime(&curr); |
Event 2:
localtime() returns NULL. - Dereferenced later, causing the null pointer dereference.
hide
Event 3:
today is set to localtime(&curr), which evaluates to NULL. See related event 2.
hide
|
|
| 2837 | | | |
| 2838 | | | #ifdef _WIN32 |
| 2839 | | | if (prefs.gui_console_open != console_open_never || log_level & G_LOG_LEVEL_ERROR) { |
| 2840 | | | |
| 2841 | | | create_console(); |
| 2842 | | | } |
| 2843 | | | if (has_console) { |
| 2844 | | | |
| 2845 | | | |
| 2846 | | | |
| 2847 | | | #endif |
| 2848 | | | switch(log_level & G_LOG_LEVEL_MASK) { |
Event 4:
log_level & ~(1 << 0 | 1 << 1) evaluates to 128.
hide
|
|
| 2849 | | | case G_LOG_LEVEL_ERROR: |
| 2850 | | | level = "Err "; |
| 2851 | | | break; |
| 2852 | | | case G_LOG_LEVEL_CRITICAL: |
| 2853 | | | level = "Crit"; |
| 2854 | | | break; |
| 2855 | | | case G_LOG_LEVEL_WARNING: |
| 2856 | | | level = "Warn"; |
| 2857 | | | break; |
| 2858 | | | case G_LOG_LEVEL_MESSAGE: |
| 2859 | | | level = "Msg "; |
| 2860 | | | break; |
| 2861 | | | case G_LOG_LEVEL_INFO: |
| 2862 | | | level = "Info"; |
| 2863 | | | break; |
| 2864 | | | case G_LOG_LEVEL_DEBUG: |
| 2865 | | | level = "Dbg "; |
| 2866 | | | break; |
| 2867 | | | default: |
| 2868 | | | fprintf(stderr, "unknown log_level %u\n", log_level); |
| 2869 | | | level = NULL; |
| 2870 | | | g_assert_not_reached();
x /usr/include/glib-2.0/glib/gtestutils.h |
| |
73 | #define g_assert_not_reached() do { g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, NULL); } while (0) |
| |
x /usr/include/glib-2.0/glib/gmacros.h |
| |
160 | # define G_STRFUNC ((const char*) (__PRETTY_FUNCTION__)) |
| |
|
| 2871 | | | } |
| 2872 | | | |
| 2873 | | | fprintf(stderr, "%02u:%02u:%02u %8s %s %s\n", |
| 2874 | | | today->tm_hour, today->tm_min, today->tm_sec, |
Null Pointer Dereference
today is dereferenced here, but it is NULL. The issue can occur if the highlighted code executes. See related event 3. Show: All events | Only primary events |
|
| 2875 | | | log_domain != NULL ? log_domain : "", |
Event 5:
log_domain != (void *)0 evaluates to true.
hide
|
|
| 2876 | | | level, message); |
| |