From a18283e2de066990476b99f20c746b78837dbc40 Mon Sep 17 00:00:00 2001 From: Shivaram Lingamneni Date: Fri, 17 Aug 2018 12:44:49 -0400 Subject: [PATCH] fix a crash when SAMODE'ing in a channel you're not joined to --- irc/channel.go | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/irc/channel.go b/irc/channel.go index 337102fd..75cab1a2 100644 --- a/irc/channel.go +++ b/irc/channel.go @@ -239,9 +239,12 @@ func (channel *Channel) Names(client *Client, rb *ResponseBuffer) { // ClientIsAtLeast returns whether the client has at least the given channel privilege. func (channel *Channel) ClientIsAtLeast(client *Client, permission modes.Mode) bool { channel.stateMutex.RLock() - defer channel.stateMutex.RUnlock() - clientModes := channel.members[client] + channel.stateMutex.RUnlock() + + if clientModes == nil { + return false + } for _, mode := range modes.ChannelUserModes { if clientModes.HasMode(mode) {