Text  |   XML   |   Visible Warnings:

Irssi : Irssi analysis 1 : stat After Open  at settings.c:611

Categories: POSIX.RACE.AO CWE:362
Warning ID: 2096.2097
Procedure: irssi_config_save_state
Trace: View
Modified: Wed Sep 2 11:51:11 2009   show details
 
Priority: None
State: None
Finding: None
Owner: None
  edit properties

Legend [ X ]
Warning Location
Contributes
Parse Error
Other Warning
Two or More Loop Iterations
On Execution Path
Comment
Macro
Preprocessor
Include
Keyword
Preprocessed Away

Source  |  Language: C Hide Legend     
ProblemLineSource
   /u1/paul/SATE/2010/c/irssi/irssi-0.8.14/src/core/settings.c
   Enter parse_configfile
 635 static CONFIG_REC *parse_configfile(const char *fname) 
 636 {
 637         CONFIG_REC *config;
 638         struct stat statbuf;
 639         const char *path;
 640         char *str;
 641  
 642         if (fname == NULL)
 643                 fname = get_irssi_config();
 644  
 645         if (stat(fname, &statbuf) == 0)
true646                 path = fname;
 647         else {
 648                 /* user configuration file not found, use the default one 
 649                    from sysconfdir */ 
 650                 path = SYSCONFDIR"/"IRSSI_GLOBAL_CONFIG;
 651                 if (stat(path, &statbuf) != 0) {
 652                         /* no configuration file in sysconfdir ..
 653                            use the build-in configuration */ 
 654                         path = NULL;
 655                 }
 656         }
 657  
 658         config = config_open(path, -1);
 659         if (config == NULL) {
 660                 str = g_strdup_printf("Error opening configuration file %s: %s",
 661                                       path, g_strerror(errno));
 662                 signal_emit("gui dialog", 2, "error", str);
 663                 g_free(str);
 664  
 665                 config = config_open(NULL, -1);
 666         }
 667  
 668         if (config->fname != NULL)
 669                 config_parse(config);
 670         else 
 671                 config_parse_data(config, default_config, "internal");
 672  
 673         config_change_file_name(config, fname, 0660);
*fname is opened674         irssi_config_save_state(fname);
     Enter parse_configfile / irssi_config_save_state
*$param_1 is opened605   static void irssi_config_save_state(const char *fname) 
 606   {
 607           struct stat statbuf;
 608    
 609           g_return_if_fail(fname != NULL);
 610    
*fname is opened611           if (stat(fname, &statbuf) != 0)     /* stat After Open */
     Exit parse_configfile / irssi_config_save_state
Preconditions
$param_1 = 0
&$unknown_91103 != 0
Postconditions
*irssi_config_file' is opened
*irssi_config_file' is checked by path name
_g_boolean_var_' = 1
((char*)&$unknown_91106)[16]' = 0
((char*)&$unknown_91106)[8]' = 432
config' = &$unknown_91106
errno' = &$unknown_91103
fname' = irssi_config_file
fname' = irssi_config_file
path' = irssi_config_file
str' = &$unknown_91105




Change Warning 2096.2097 : stat After Open

Priority:
State:
Finding:
Owner:
Note: