Fix dereference of invalid pointer with ?chaninfo of empty +z channel.
authorMichael Poole <mdpoole@troilus.org>
Tue, 9 Mar 2010 02:29:53 +0000 (21:29 -0500)
committerMichael Poole <mdpoole@troilus.org>
Tue, 9 Mar 2010 02:29:53 +0000 (21:29 -0500)
src/opserv.c (cmd_chaninfo): Make sure there is at least one element in
    the members array before reading from the first element.

src/opserv.c

index 7457336a78cb30295f01d605e573405c1662f403..f9af6bb80ad8e61098e66f4fe1ddd0460217314d 100644 (file)
@@ -490,7 +490,9 @@ static MODCMD_FUNC(cmd_chaninfo)
     qsort(members, channel->members.used, sizeof(members[0]), modeNode_sort);
 
     /* Display the array. */
-    show_oplevels = (members[0]->modes & MODE_CHANOP) && (members[0]->oplevel < MAXOPLEVEL);
+    show_oplevels = (channel->members.used != 0)
+        && (members[0]->modes & MODE_CHANOP)
+        && (members[0]->oplevel < MAXOPLEVEL);
     for (n=0; n<channel->members.used; n++) {
         moden = members[n];
         if (moden->modes & MODE_CHANOP) {