Text  |   XML   |   Visible Warnings:

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

Categories: LANG.MEM.NPD CWE:476
Warning ID: 2080.2080
Procedure: eval_special_string
Trace: View
Modified: Wed Sep 2 11:51:04 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;
 549         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,
true563                                            data, &arg_used, 0);
ret <= 4095564                 if (*ret != '\0') {     /* Null Pointer Dereference */
 565                         if (arg_used) arg_used_ever = TRUE;
 566  
 567                         if (strchr(cmdchars, *ret) == NULL) {   /* Null Pointer Dereference (ID: 2079.2079) */
 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_14563 >= &$unknown_14558 + 1
&$unknown_14564 != &$unknown_14558
((char*)&$unknown_14558)[-1] != 36
((char*)&$unknown_14558)[-1] != 92
((char*)&$unknown_14558)[1] = 32
$unknown_14559 != 0
strlen(&$unknown_14559) != 0
$unknown_14563 = 32
strlen(&$unknown_14563) != 0
strlen(&$unknown_14563) != 1
((char*)&$unknown_14563)[2] != 32
((char*)&$unknown_14563)[1] = 32
Postconditions
$unknown_14558' = 0
strlen(&$unknown_14558)' = 0
cmd' = $param_1
data' = $param_2
item' = $param_4
orig' = &$unknown_14559
ret' = 0
server' = $param_3
start' = &$unknown_14564
str' = &$unknown_14563 + 2




Change Warning 2080.2080 : Null Pointer Dereference

Priority:
State:
Finding:
Owner:
Note: