Text  |   XML   |   Visible Warnings:

Irssi : Irssi analysis 1 : File System Race Condition  at write.c:311

Categories: POSIX.RACE.TOCTTOU CWE:367
Warning ID: 2259.2265
Procedure: config_write
Trace: View
Modified: Wed Sep 2 11:54:58 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/fe-common/core/fe-settings.c
   Enter cmd_save
 323 static void cmd_save(const char *data) 
 324 {
 325         GHashTable *optlist;
 326         char *format, *fname;
 327         void *free_arg;
 328  
 329         if (!cmd_get_params(data, &free_arg, 1 | PARAM_FLAG_OPTIONS,
 330                             "save", &optlist, &fname))
 331                 return;
 332  
 333         if (*fname == '\0')
 334                 fname = mainconfig->fname;
 335  
true336         if (!irssi_config_is_changed(fname))
*fname is checked by path name337                 settings_save_fe(fname);
     Enter cmd_save / settings_save_fe
*$param_1 is checked by path name307   static void settings_save_fe(const char *fname) 
 308   {
*fname is checked by path name309           if (settings_save(fname, FALSE /* not autosaved */)) {
       /u1/paul/SATE/2010/c/irssi/irssi-0.8.14/src/core/settings.c
       Enter cmd_save / settings_save_fe / settings_save
*$param_1 is checked by path name741     int settings_save(const char *fname, int autosave) 
 742     {
 743             char *str;
 744             int error;
 745      
 746             if (fname == NULL)
 747                     fname = mainconfig->fname;
 748      
*fname is checked by path name749             error = config_write(mainconfig, fname, 0660) != 0;
         /u1/paul/SATE/2010/c/irssi/irssi-0.8.14/src/lib-config/write.c
         Enter cmd_save / settings_save_fe / settings_save / config_write
*$param_2 is checked by path name300       int config_write(CONFIG_REC *rec, const char *fname, int create_mode) 
 301       {
 302               int ret;
 303               int fd;
 304        
 305               g_return_val_if_fail(rec != NULL, -1);
 306               g_return_val_if_fail(fname != NULL || rec->fname != NULL, -1);
 307               g_return_val_if_fail(create_mode != -1 || rec->create_mode != -1, -1);
 308        
*fname is checked by path name309               fd = open(fname != NULL ? fname : rec->fname,
*$temp94 is checked by path name310                                  O_WRONLY | O_TRUNC | O_CREAT,
*fname is checked by path name311                                  create_mode != -1 ? create_mode : rec->create_mode);     /* File System Race Condition */
         Exit cmd_save / settings_save_fe / settings_save / config_write
       Exit cmd_save / settings_save_fe / settings_save
     Exit cmd_save / settings_save_fe
Preconditions
$param_1 != 0
Postconditions
*mainconfig->fname' is checked by path name
_g_boolean_var_' = 1
_g_boolean_var_' = 1
_g_boolean_var_' = 1
autosave' = 0
create_mode' = 432
data' = $param_1
errno' != 0
fname' = mainconfig->fname
fname' = mainconfig->fname
fname' = mainconfig->fname
fname' = mainconfig->fname
rec' = mainconfig




Change Warning 2259.2265 : File System Race Condition

Priority:
State:
Finding:
Owner:
Note: