Ticket #2041: 2041-missing-g_strdup_printf-retcheck-in-logging.c-FULL.patch

File 2041-missing-g_strdup_printf-retcheck-in-logging.c-FULL.patch, 2.2 KB (added by vit_r, 14 years ago)

missing retcheck of g_strdup_printf in lib logging.c

  • lib/logging.c

    From 28603804788cc6e24d742d970ba725080c3b9e53 Mon Sep 17 00:00:00 2001
    From: Vit Rosin <vit_r@list.ru>
    Date: Fri, 19 Feb 2010 14:53:53 +0000
    Subject: [PATCH]  missing retcheck of g_strdup_printf in logging.c
    
    ---
     lib/logging.c |   54 +++++++++++++++++++++++++++++-------------------------
     1 files changed, 29 insertions(+), 25 deletions(-)
    
    diff --git a/lib/logging.c b/lib/logging.c
    index c9de5d3..0f96e7d 100644
    a b  
    4242/*** file scope functions **********************************************/ 
    4343 
    4444static gboolean 
    45 is_logging_enabled(void) 
     45is_logging_enabled (void) 
    4646{ 
    47         static gboolean logging_initialized = FALSE; 
    48         static gboolean logging_enabled = FALSE; 
    49  
    50         if (!logging_initialized) { 
    51                 logging_enabled = mc_config_get_int (mc_main_config, 
    52                         CONFIG_APP_SECTION, "development.enable_logging", FALSE); 
    53                 logging_initialized = TRUE; 
    54         } 
    55         return logging_enabled; 
     47    static gboolean logging_initialized = FALSE; 
     48    static gboolean logging_enabled = FALSE; 
     49 
     50    if (!logging_initialized) { 
     51        logging_enabled = (gboolean) mc_config_get_int (mc_main_config, 
     52                CONFIG_APP_SECTION, "development.enable_logging", FALSE); 
     53        logging_initialized = TRUE; 
     54    } 
     55    return logging_enabled; 
    5656} 
    5757 
    5858/*** public functions **************************************************/ 
    5959 
    6060void 
    61 mc_log(const char *fmt, ...) 
     61mc_log (const char *fmt, ...) 
    6262{ 
    63         va_list args; 
    64         FILE *f; 
    65         char *logfilename; 
    66  
    67         if (is_logging_enabled()) { 
    68                 va_start(args, fmt); 
    69                 logfilename = g_strdup_printf("%s/%s/log", home_dir, MC_USERCONF_DIR); 
    70                 if ((f = fopen(logfilename, "a")) != NULL) { 
    71                         (void)vfprintf(f, fmt, args); 
    72                         (void)fclose(f); 
    73                 } 
    74                 g_free(logfilename); 
    75                 va_end(args); 
    76         } 
     63    va_list args; 
     64    FILE *f; 
     65    char *logfilename; 
     66 
     67    if (is_logging_enabled ()) { 
     68        logfilename = g_strdup_printf ("%s/%s/log", home_dir, MC_USERCONF_DIR); 
     69        if (logfilename == NULL) 
     70            return; 
     71 
     72        va_start (args, fmt); 
     73        f = fopen (logfilename, "a"); 
     74        g_free (logfilename); 
     75        if (f != NULL) { 
     76            (void) vfprintf (f, fmt, args); 
     77            (void) fclose (f); 
     78        } 
     79        va_end (args); 
     80    } 
    7781}