]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/coremods/core_user/umode_s.cpp
Update copyright headers.
[user/henk/code/inspircd.git] / src / coremods / core_user / umode_s.cpp
index 6e1f6d43db0775561795be6f107d92b6d33cc33e..5994f97fb753a557bb4a1c9188be74e71ed05858 100644 (file)
@@ -89,7 +89,8 @@ std::string ModeUserServerNoticeMask::ProcessNoticeMasks(User* user, const std::
                        case '*':
                                for (size_t j = 0; j < 64; j++)
                                {
-                                       if (ServerInstance->SNO->IsSnomaskUsable(j+'A'))
+                                       const char chr = j + 'A';
+                                       if (user->HasSnomaskPermission(chr) && ServerInstance->SNO->IsSnomaskUsable(chr))
                                                curr[j] = adding;
                                }
                        break;
@@ -103,6 +104,12 @@ std::string ModeUserServerNoticeMask::ProcessNoticeMasks(User* user, const std::
                                                user->WriteNumeric(ERR_UNKNOWNSNOMASK, *i, "is an unknown snomask character");
                                                continue;
                                        }
+                                       else if (!user->HasSnomaskPermission(*i))
+                                       {
+                                               user->WriteNumeric(ERR_NOPRIVILEGES, InspIRCd::Format("Permission Denied - Oper type %s does not have access to snomask %c",
+                                                       user->oper->name.c_str(), *i));
+                                               continue;
+                                       }
                                }
                                else if (!(((*i >= 'a') && (*i <= 'z')) || ((*i >= 'A') && (*i <= 'Z'))))
                                        continue;