Bläddra i källkod

fix case where CS TRANSFER as an operator required acceptance

Reported by @mogad0n. If a user had both operator privileges and
channel owner privileges, the CS TRANSFER would proceed as though
unprivileged, requiring acceptance by the receiving user. Fix this
to not require acceptance.
tags/v2.8.0-rc1
Shivaram Lingamneni 2 år sedan
förälder
incheckning
85fabaad6d
1 ändrade filer med 6 tillägg och 8 borttagningar
  1. 6
    8
      irc/chanserv.go

+ 6
- 8
irc/chanserv.go Visa fil

@@ -541,13 +541,11 @@ func csTransferHandler(service *ircService, server *Server, client *Client, comm
541 541
 	chname = regInfo.Name
542 542
 	account := client.Account()
543 543
 	isFounder := account != "" && account == regInfo.Founder
544
-	var oper *Oper
545
-	if !isFounder {
546
-		oper = client.Oper()
547
-		if !oper.HasRoleCapab("chanreg") {
548
-			service.Notice(rb, client.t("Insufficient privileges"))
549
-			return
550
-		}
544
+	oper := client.Oper()
545
+	hasPrivs := oper.HasRoleCapab("chanreg")
546
+	if !isFounder && !hasPrivs {
547
+		service.Notice(rb, client.t("Insufficient privileges"))
548
+		return
551 549
 	}
552 550
 	target := params[1]
553 551
 	targetAccount, err := server.accounts.LoadAccount(params[1])
@@ -569,7 +567,7 @@ func csTransferHandler(service *ircService, server *Server, client *Client, comm
569 567
 		server.snomasks.Send(sno.LocalOpers, message)
570 568
 		server.logger.Info("opers", message)
571 569
 	}
572
-	status, err := channel.Transfer(client, target, oper != nil)
570
+	status, err := channel.Transfer(client, target, hasPrivs)
573 571
 	if err == nil {
574 572
 		switch status {
575 573
 		case channelTransferComplete:

Laddar…
Avbryt
Spara