Text  |   XML   |   Visible Warnings:

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

Categories: LANG.MEM.NPD CWE:476
Warning ID: 22024.28506
Procedure: statusbar_item_default_handler
Trace: view
Modified: Thu Nov 26 11:19:28 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) {
 708                   item->min_size = item->max_size = format_get_length(tmpstr);   /* Null Pointer Dereference (ID: 7405.28505) */
 709           } else {
 710                   GString *out;
 711    
item <= 4095712                   if (item->size < item->min_size) {     /* Null Pointer Dereference */
     Exit XS_Irssi__TextUI__StatusbarItem_default_handler / statusbar_item_default_handler
Preconditions
&$unknown_1922011 >= 5
&$unknown_1922021 != 0
&$unknown_1922023 != 0
active_win->active_server = 0
$unknown_1922020 <= 125
$unknown_1922020 >= 123
strlen(&$unknown_1922020) != 0
strlen(&$unknown_1922025) = 2
((char*)&$unknown_1922025)[2] = 0
((char*)&$unknown_1922025)[1] >= 96
Postconditions
_svi' = &$unknown_1921995
_svi' = &$unknown_1922019
_svi' = &$unknown_1922010
_svi' = &$unknown_1922002
$unknown_1921980' = $unknown_1921980 - 4
$unknown_1922024' = 0
strlen(&$unknown_1922024)' = 0
data' = &$unknown_1922023
data' = &$unknown_1922023
escape_vars' = &$unknown_1922021
get_size_only' = 0
get_size_only' = 0
item' = 0
item' = 0
items' = &$unknown_1922011
server' = active_win->connect_server
str' = &$unknown_1922020
str' = &$unknown_1922020 + 1
tmpstr' = &$unknown_1922024
tmpstr2' = &$unknown_1922025
wiitem' = active_win->active




Change Warning 22024.28506 : Null Pointer Dereference

Priority:
State:
Finding:
Owner:
Note: