Skip to content

Commit 1b9bb3d

Browse files
Fix server name/pass len handling on jump
Found by: michaelortmann Patch by: michaelortmann Due to eggdrops mod API, we cannot use sizeof in irc.mod for strings defined in server.mod.
1 parent bef18e3 commit 1b9bb3d

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed

src/mod/irc.mod/msgcmds.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1095,9 +1095,9 @@ static int msg_jump(char *nick, char *host, struct userrec *u, char *par)
10951095
putlog(LOG_CMDS, "*", "(%s!%s) !%s! JUMP %s %d %s", nick, host,
10961096
u->handle, s, port, par);
10971097
#endif
1098-
strcpy(newserver, s);
1098+
strlcpy(newserver, s, NEWSERVERMAX);
10991099
newserverport = port;
1100-
strcpy(newserverpass, par);
1100+
strlcpy(newserverpass, par, NEWSERVERPASSMAX);
11011101
} else
11021102
putlog(LOG_CMDS, "*", "(%s!%s) !%s! JUMP", nick, host, u->handle);
11031103
dprintf(-serv, "NOTICE %s :%s\n", nick, IRC_JUMP);

src/mod/server.mod/server.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ static Function *global = NULL;
3131

3232
static int ctcp_mode;
3333
static int serv; /* sock # of server currently */
34-
static char newserver[121]; /* new server? */
34+
static char newserver[NEWSERVERMAX]; /* new server? */
3535
static int newserverport; /* new server port? */
36-
static char newserverpass[121]; /* new server password? */
36+
static char newserverpass[NEWSERVERPASSMAX]; /* new server password? */
3737
static time_t trying_server; /* trying to connect to a server right now? */
3838
static int server_lag; /* how lagged (in seconds) is the server? */
3939
static char altnick[NICKLEN]; /* possible alternate nickname to use */

src/mod/server.mod/server.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,14 @@
2323
#ifndef _EGG_MOD_SERVER_SERVER_H
2424
#define _EGG_MOD_SERVER_SERVER_H
2525

26-
#define CAPMAX 499 /* (512 - "CAP REQ :XXX\r\n") */
27-
#define CLITAGMAX 4096 /* Max size for IRCv3 message-tags sent by client*/
28-
#define TOTALTAGMAX 8191 /* @ + Server tag len + ; + Client tag len + ' ' */
29-
#define MSGMAX 511 /* Max size of IRC message line */
30-
#define SENDLINEMAX CLITAGMAX + MSGMAX
31-
#define RECVLINEMAX TOTALTAGMAX + MSGMAX
26+
#define CAPMAX 499 /* (512 - "CAP REQ :XXX\r\n") */
27+
#define CLITAGMAX 4096 /* Max size for IRCv3 message-tags sent by client*/
28+
#define TOTALTAGMAX 8191 /* @ + Server tag len + ; + Client tag len + ' ' */
29+
#define MSGMAX 511 /* Max size of IRC message line */
30+
#define SENDLINEMAX CLITAGMAX + MSGMAX
31+
#define RECVLINEMAX TOTALTAGMAX + MSGMAX
32+
#define NEWSERVERMAX 256
33+
#define NEWSERVERPASSMAX 128
3234

3335
#define check_tcl_ctcp(a,b,c,d,e,f) check_tcl_ctcpr(a,b,c,d,e,f,H_ctcp)
3436
#define check_tcl_ctcr(a,b,c,d,e,f) check_tcl_ctcpr(a,b,c,d,e,f,H_ctcr)

src/mod/server.mod/servmsg.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1918,7 +1918,7 @@ static void server_resolve_failure(int);
19181918
*/
19191919
static void connect_server(void)
19201920
{
1921-
char pass[121], botserver[UHOSTLEN], s[1024];
1921+
char pass[NEWSERVERPASSMAX], botserver[NEWSERVERMAX], s[1024];
19221922
#ifdef IPV6
19231923
char buf[sizeof(struct in6_addr)];
19241924
#endif
@@ -1930,9 +1930,9 @@ static void connect_server(void)
19301930
empty_msgq();
19311931
if (newserverport) { /* Jump to specified server */
19321932
curserv = -1; /* Reset server list */
1933-
strcpy(botserver, newserver);
1933+
strlcpy(botserver, newserver, sizeof botserver);
19341934
botserverport = newserverport;
1935-
strcpy(pass, newserverpass);
1935+
strlcpy(pass, newserverpass, sizeof pass);
19361936
newserver[0] = 0;
19371937
newserverport = 0;
19381938
newserverpass[0] = 0;

0 commit comments

Comments
 (0)