Text  |   XML   |   Visible Warnings:

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

Categories: LANG.STRUCT.NTAD
Warning ID: 7112.28306
Similar Warnings: 7112.28307
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 */
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 (ID: 7112.28307) */
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.28306 : Null Test After Dereference

Because they are very similar, this warning shares annotations with warning 7112.28307.

Priority:
State:
Finding:
Owner:
Note: