diff options
| author | Nakidai <nakidai@disroot.org> | 2026-02-05 14:16:12 +0300 |
|---|---|---|
| committer | Nakidai <nakidai@disroot.org> | 2026-02-05 14:16:12 +0300 |
| commit | 30bee4aa0e19de4e2535d884ef65f254867168ab (patch) | |
| tree | 175600648ad678f7ba42e7c05aff20a9f166cb3a | |
| parent | 68a91231a9480d591b43b359ad9a02af1faef07b (diff) | |
| download | libreircd-30bee4aa0e19de4e2535d884ef65f254867168ab.tar.gz libreircd-30bee4aa0e19de4e2535d884ef65f254867168ab.zip | |
Fix UB with reply 461
It requires a parameter command, but no caller provided it :/
| -rw-r--r-- | handle.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/handle.c b/handle.c index fb08f73..088b756 100644 --- a/handle.c +++ b/handle.c @@ -38,7 +38,7 @@ join(struct Message *msg, struct Peer *peer) /* TODO: support comma separated list of channels, keys */ ensure(peer->type, reply(peer, 451), 0); - ensure(msg->params[0] && *msg->params[0], reply(peer, 461), 0); + ensure(msg->params[0] && *msg->params[0], reply(peer, 461, msg->command), 0); ensure(peer->channels_c != lengthof(peer->channels), reply(peer, 405, msg->params[0]), 0) ensure(*msg->params[0] == '#', reply(peer, 403, msg->params[0]), 0); @@ -200,7 +200,7 @@ oper(struct Message *msg, struct Peer *peer) size_t i; ensure(peer->type, reply(peer, 451), 0); - ensure(msg->params[0] && *msg->params[0], reply(peer, 461), 0); + ensure(msg->params[0] && *msg->params[0], reply(peer, 461, msg->command), 0); ensure(msg->params[1] && *msg->params[1], reply(peer, 464), 0); for (i = 0; i < opers_c; ++i) @@ -220,7 +220,7 @@ part(struct Message *msg, struct Peer *peer) size_t i; ensure(peer->type, reply(peer, 451), 0); - ensure(msg->params[0] && *msg->params[0], reply(peer, 461), 0); + ensure(msg->params[0] && *msg->params[0], reply(peer, 461, msg->command), 0); for (i = 0; i < peer->channels_c; ++i) if (!strcmp(peer->channels[i]->name, msg->params[0])) @@ -347,7 +347,7 @@ static int setcreation(struct Message *msg, struct Peer *peer) { ensure(peer->type == CONFIG, reply(peer, 481, "You're not a config file"), 0); - ensure(msg->params[0] && *msg->params[0], reply(peer, 461), 0); + ensure(msg->params[0] && *msg->params[0], reply(peer, 461, msg->command), 0); strlcpy(creation, msg->params[0], sizeof(creation)); @@ -358,7 +358,7 @@ static int setinfo(struct Message *msg, struct Peer *peer) { ensure(peer->type == CONFIG, reply(peer, 481, "You're not a config file"), 0); - ensure(msg->params[0] && *msg->params[0], reply(peer, 461), 0); + ensure(msg->params[0] && *msg->params[0], reply(peer, 461, msg->command), 0); strlcpy(info, msg->params[0], sizeof(info)); @@ -371,8 +371,8 @@ setoper(struct Message *msg, struct Peer *peer) size_t i; ensure(peer->type == CONFIG, reply(peer, 481, "You're not a config file"), 0); - ensure(msg->params[0] && *msg->params[0], reply(peer, 461), 0); - ensure(msg->params[1], reply(peer, 461), 0); + ensure(msg->params[0] && *msg->params[0], reply(peer, 461, msg->command), 0); + ensure(msg->params[1], reply(peer, 461, msg->command), 0); ensure( !*msg->params[1] || *msg->params[1] && opers_c < OPERS_MAX, reply(peer, 420, msg->params[0]), @@ -405,7 +405,7 @@ user(struct Message *msg, struct Peer *peer) ensure(!peer->type, reply(peer, 462), 0); for (i = 0; i < 4; ++i) - ensure(msg->params[i] && *msg->params[i], reply(peer, 461), 0); + ensure(msg->params[i] && *msg->params[i], reply(peer, 461, msg->command), 0); for (cp = msg->params[0]; *cp; ++cp) if (*cp == '@') |