Text  |   XML   |   Visible Warnings:

Irssi : Irssi analysis 1 : Null Pointer Dereference  at special-vars.c:567

Categories: LANG.MEM.NPD CWE:476
Warning ID: 2079.2079
Procedure: eval_special_string
Trace: View
Modified: Wed Sep 2 11:51:03 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/special-vars.c
   Enter eval_special_string
 539 void eval_special_string(const char *cmd, const char *data,
 540                          SERVER_REC *server, void *item) 
 541 {
 542         const char *cmdchars;
 543         char *orig, *str, *start, *ret;
 544         int arg_used, arg_used_ever;
 545         GSList *commands;
 546  
 547         commands = NULL;
 548         arg_used_ever = FALSE;
true549         cmdchars = settings_get_str("cmdchars");
 550  
 551         /* get a list of all the commands to run */ 
 552         orig = start = str = g_strdup(cmd);
 553         do {
 554                 if (is_split_char(str, start)) {
 555                         *str++ = '\0';
 556                         while (*str == ' ') str++;
 557                 } else if (*str != '\0') {
 558                         str++;
 559                         continue;
 560                 }
 561  
 562                 ret = parse_special_string(start, server, item,
 563                                            data, &arg_used, 0);
 564                 if (*ret != '\0') {   /* Null Pointer Dereference (ID: 2080.2080) */
 565                         if (arg_used) arg_used_ever = TRUE;
 566  
cmdchars <= 4095567                         if (strchr(cmdchars, *ret) == NULL) {     /* Null Pointer Dereference */
 568                                 /* no command char - let's put it there.. */ 
 569                                 char *old = ret;
 570  
 571                                 ret = g_strdup_printf("%c%s", *cmdchars, old);
 572                                 g_free(old);
 573                         }
 574                         commands = g_slist_append(commands, ret);
 575                 }
 576                 start = str;
 577         } while (*start != '\0');
Preconditions
$param_2 != 0
&$unknown_14113 != &$unknown_14115
&$unknown_14114 >= &$unknown_14113 + 1
$unknown_14109 != 0
strlen(&$unknown_14109) != 0
((char*)&$unknown_14113)[-1] != 36
((char*)&$unknown_14113)[-1] != 92
((char*)&$unknown_14113)[1] = 32
$unknown_14114 = 32
strlen(&$unknown_14114) != 0
strlen(&$unknown_14114) != 1
((char*)&$unknown_14114)[2] != 32
((char*)&$unknown_14114)[1] = 32
strlen(&$unknown_14115) <= 1
$unknown_14116 != 0
strlen(&$unknown_14116) != 0
Postconditions
$unknown_14113' = 0
strlen(&$unknown_14113)' = 0
arg_used' = 0
cmd' = $param_1
cmdchars' = 0
data' = $param_2
item' = $param_4
orig' = &$unknown_14109
ret' = &$unknown_14116
server' = $param_3
start' = &$unknown_14115
str' = &$unknown_14114 + 2




Change Warning 2079.2079 : Null Pointer Dereference

Priority:
State:
Finding:
Owner:
Note: