Text  |   XML   |   Visible Warnings:

irssi-0.8.14 : irssi-0.8.14 analysis 2 : Null Pointer Dereference  at statusbar.c:708

Categories: LANG.MEM.NPD CWE:476
Warning ID: 7405.28505
Procedure: statusbar_item_default_handler
Trace: view
Modified: Thu Nov 26 11:19:25 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
   /kat0/fletcher/SATE/2010/irssi-0.8.14/src/perl/textui/Statusbar.c
   Enter XS_Irssi__TextUI__StatusbarItem_default_handler
 228 XS(XS_Irssi__TextUI__StatusbarItem_default_handler) 
 229 {
 230 #ifdef dVAR 
 231     dVAR; dXSARGS;
 232 #else 
 233     dXSARGS; 
 234 #endif 
 235     if (items < 4 || items > 5)
 236        Perl_croak(aTHX_ "Usage: %s(%s)", "Irssi::TextUI::StatusbarItem::default_handler", "item, get_size_only, str, data, escape_vars = TRUE");
 237     PERL_UNUSED_VAR(cv); /* -W */ 
 238     {
true239         Irssi__TextUI__StatusbarItem    item = irssi_ref_object(ST(0));
 240         int     get_size_only = (int)SvIV(ST(1));
 241         char *  str = (char *)SvPV_nolen(ST(2));
 242         char *  data = (char *)SvPV_nolen(ST(3));
 243         int     escape_vars;
 244 #line 158 "Statusbar.xs"
 245         HV *hv;
 246 #line 247 "Statusbar.c"
 247  
 248         if (items < 5)
 249             escape_vars = TRUE;
 250         else {
 251             escape_vars = (int)SvIV(ST(4));
 252         }
 253 #line 160 "Statusbar.xs"
 254         statusbar_item_default_handler(item, get_size_only,
 255                                        *str == '\0' ? NULL : str,
item <= 4095256                                        data, escape_vars);
     /kat0/fletcher/SATE/2010/irssi-0.8.14/src/fe-text/statusbar.c
     Enter XS_Irssi__TextUI__StatusbarItem_default_handler / statusbar_item_default_handler
 666   void statusbar_item_default_handler(SBAR_ITEM_REC *item, int get_size_only,
 667                                       const char *str, const char *data,
 668                                       int escape_vars) 
 669   {
 670           SERVER_REC *server;
 671           WI_ITEM_REC *wiitem;  
 672           char *tmpstr, *tmpstr2;
 673           int len;
 674    
 675           if (str == NULL)
 676                   str = statusbar_item_get_value(item);
 677           if (str == NULL || *str == '\0') {
 678                   item->min_size = item->max_size = 0;
 679                   return;
 680           }
 681    
 682           if (active_win == NULL) {
 683                   server = NULL;
 684                   wiitem = NULL;
 685           } else {
 686                   server = active_win->active_server != NULL ? 
 687                           active_win->active_server : active_win->connect_server;
 688                   wiitem = active_win->active;
 689           }
 690    
 691           /* expand templates */ 
 692           tmpstr = theme_format_expand_data(current_theme, &str,
 693                                             'n', 'n',
 694                                             NULL, NULL,
 695                                             EXPAND_FLAG_ROOT | 
 696                                             EXPAND_FLAG_IGNORE_REPLACES | 
 697                                             EXPAND_FLAG_IGNORE_EMPTY);
 698           /* expand $variables */ 
 699           tmpstr2 = parse_special_string(tmpstr, server, wiitem, data, NULL,
 700                                          (escape_vars ? PARSE_FLAG_ESCAPE_VARS : 0 ));
 701           g_free(tmpstr);
 702    
 703           /* remove color codes (not %formats) */ 
 704           tmpstr = strip_codes(tmpstr2);
 705           g_free(tmpstr2);
 706    
 707           if (get_size_only) {
item <= 4095708                   item->min_size = item->max_size = format_get_length(tmpstr);     /* Null Pointer Dereference */
     Exit XS_Irssi__TextUI__StatusbarItem_default_handler / statusbar_item_default_handler
Preconditions
&$unknown_1902837 >= 5
&$unknown_1902848 != 0
&$unknown_1902851 != 0
active_win->active_server != 0
$unknown_1902846 <= 125
$unknown_1902846 >= 123
strlen(&$unknown_1902846) != 0
strlen(&$unknown_1902850) = 3
((char*)&$unknown_1902850)[2] != 0
((char*)&$unknown_1902850)[3] = 0
((char*)&$unknown_1902850)[1] != 0
((char*)&$unknown_1902850)[1] <= 95
term_is_utf8 != 0
Postconditions
_svi' = &$unknown_1902821
_svi' = &$unknown_1902845
_svi' = &$unknown_1902836
_svi' = &$unknown_1902828
$unknown_1902806' = $unknown_1902806 - 4
strlen(&$unknown_1902849)' = 0
data' = &$unknown_1902848
data' = &$unknown_1902848
escape_vars' = 0
get_size_only' = &$unknown_1902851
get_size_only' = &$unknown_1902851
item' = 0
item' = 0
items' = &$unknown_1902837
server' = active_win->active_server
str' = &$unknown_1902846
str' = &$unknown_1902846 + 1
tmpstr' = &$unknown_1902849
tmpstr2' = &$unknown_1902850
wiitem' = active_win->active




Change Warning 7405.28505 : Null Pointer Dereference

Priority:
State:
Finding:
Owner:
Note: