Text  |   XML   |   Visible Warnings:

irssi-0.8.14 : irssi-0.8.14 analysis 2 : Null Test After Dereference  at channel-rejoin.c:101

Categories: LANG.STRUCT.NTAD
Warning ID: 7112.28307
Similar Warnings: 7112.28306
Procedure: channel_rejoin
Trace: view
Modified: Thu Nov 26 11:08:37 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     
LineSource
  /kat0/fletcher/SATE/2010/irssi-0.8.14/src/irc/core/channel-rejoin.c
  Enter channel_rejoin
71 static int channel_rejoin(IRC_SERVER_REC *server, const char *channel) 
72 {
73         IRC_CHANNEL_REC *chanrec;
74         REJOIN_REC *rec;
75  
76         g_return_val_if_fail(IS_IRC_SERVER(server), 0);
77         g_return_val_if_fail(channel != NULL, 0);
78  
79         chanrec = irc_channel_find(server, channel);
80         if (chanrec == NULL || chanrec->joined) return 0;
81  
82         if (!settings_get_bool("channels_rejoin_unavailable")) {
83                 chanrec->left = TRUE;
84                 channel_destroy(CHANNEL(chanrec));
85                 return 0;
86         }
87          
88         rec = rejoin_find(server, channel);
89         if (rec != NULL) {
90                 /* already exists */ 
91                 rec->joining = FALSE;
92  
93                 /* update channel key */ 
94                 g_free_and_null(rec->key);
95                 if (channel_have_key(chanrec))   /* Null Test After Dereference (ID: 7112.28306) */
96                         rec->key = g_strdup(chanrec->key);
97         } else {
98                 /* new rejoin */ 
99                 rec = g_new0(REJOIN_REC, 1);
100                 rec->channel = g_strdup(channel);
101                 if (channel_have_key(chanrec))     /* Null Test After Dereference */
102                         rec->key = g_strdup(chanrec->key);
103  
104                 server->rejoin_channels = 
105                         g_slist_append(server->rejoin_channels, rec);
106                 signal_emit("channel rejoin new", 2, server, rec);
107         }
108  
109         chanrec->left = TRUE;
110         channel_destroy(CHANNEL(chanrec));
111         return 1;
112 } 




Change Warning 7112.28307 : Null Test After Dereference

Because they are very similar, this warning shares annotations with warning 7112.28306.
CodeSonar has selected warning 7112.28306 to represent this group of similar warnings. In order to edit this group, you must edit warning 7112.28306.