1
0
mirror of https://github.com/weechat/weechat.git synced 2026-07-09 03:03:12 +02:00

Secured code to prevent buffer overflows and memory leaks

This commit is contained in:
Sebastien Helleu
2004-01-24 02:22:16 +00:00
parent 16717f8322
commit dcb3b6fc7e
24 changed files with 1234 additions and 964 deletions
+19 -11
View File
@@ -183,7 +183,7 @@ irc_cmd_recv_join (t_irc_server *server, char *host, char *arguments)
_(" has joined "));
gui_printf_color (ptr_channel->window, COLOR_WIN_CHAT_CHANNEL,
"%s\n", arguments);
nick_new (ptr_channel, host, 0, 0, 0);
(void) nick_new (ptr_channel, host, 0, 0, 0);
gui_redraw_window_nick (gui_current_window);
return 0;
}
@@ -487,7 +487,7 @@ irc_cmd_recv_nick (t_irc_server *server, char *host, char *arguments)
ptr_nick = nick_search (ptr_channel, host);
if (ptr_nick)
{
nick_is_me = (strcmp (ptr_nick->nick, server->nick) == 0);
nick_is_me = (strcmp (ptr_nick->nick, server->nick) == 0) ? 1 : 0;
nick_change (ptr_channel, ptr_nick, arguments);
irc_display_prefix (ptr_channel->window, PREFIX_INFO);
if (nick_is_me)
@@ -867,15 +867,23 @@ irc_cmd_recv_privmsg (t_irc_server *server, char *host, char *arguments)
if (strcmp (pos, "\01VERSION\01") == 0)
{
buf = (struct utsname *) malloc (sizeof (struct utsname));
uname (buf);
server_sendf (server,
_("NOTICE %s :%sVERSION %s v%s"
" compiled on %s, host \"%s\" is running "
"%s %s / %s%s"),
host, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
&buf->nodename, &buf->sysname,
&buf->release, &buf->machine, "\01\r\n");
free (buf);
if (buf && (uname (buf) == 0))
{
server_sendf (server,
_("NOTICE %s :%sVERSION %s v%s"
" compiled on %s, host \"%s\" is running "
"%s %s / %s%s"),
host, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
&buf->nodename, &buf->sysname,
&buf->release, &buf->machine, "\01\r\n");
free (buf);
}
else
server_sendf (server,
_("NOTICE %s :%sVERSION %s v%s"
" compiled on %s%s"),
host, "\01", PACKAGE_NAME, PACKAGE_VERSION, __DATE__,
"\01\r\n");
irc_display_prefix (server->window, PREFIX_INFO);
gui_printf_color (server->window,
COLOR_WIN_CHAT, _("Received a "));
+6 -4
View File
@@ -318,7 +318,7 @@ server_send (t_irc_server * server, char *buffer, int size_buf)
* server_sendf: send formatted data to irc server
*/
int
void
server_sendf (t_irc_server * server, char *fmt, ...)
{
va_list args;
@@ -326,14 +326,14 @@ server_sendf (t_irc_server * server, char *fmt, ...)
int size_buf;
if (!server)
return -1;
return;
va_start (args, fmt);
size_buf = vsnprintf (buffer, sizeof (buffer) - 1, fmt, args);
va_end (args);
if ((size_buf == 0) || (strcmp (buffer, "\r\n") == 0))
return 0;
return;
buffer[sizeof (buffer) - 1] = '\0';
if ((size_buf < 0) || (size_buf > (int) (sizeof (buffer) - 1)))
@@ -343,7 +343,9 @@ server_sendf (t_irc_server * server, char *fmt, ...)
gui_printf (server->window, "[DEBUG] Sending to server >>> %s\n", buffer);
#endif
buffer[size_buf - 2] = '\r';
return server_send (server, buffer, size_buf);
if (server_send (server, buffer, size_buf) <= 0)
gui_printf (server->window, _("%s error sending data to IRC server\n"),
WEECHAT_ERROR);
}
/*
+2 -2
View File
@@ -151,7 +151,7 @@ extern void server_free_all ();
extern t_irc_server *server_new (char *, int, int, char *, int, char *, char *,
char *, char *, char *, char *, char *, char *);
extern int server_send (t_irc_server *, char *, int);
extern int server_sendf (t_irc_server *, char *, ...);
extern void server_sendf (t_irc_server *, char *, ...);
extern void server_recv (t_irc_server *);
extern int server_connect ();
extern void server_auto_connect (int);
@@ -182,7 +182,7 @@ extern int nick_get_max_length (t_irc_channel *);
/* IRC display (irc-diplay.c) */
extern void irc_display_prefix (t_gui_window *, char *);
extern void irc_display_prefix (/*@null@*/ t_gui_window *, char *);
extern void irc_display_nick (t_gui_window *, t_irc_nick *, int, int, int, int);
extern void irc_display_mode (t_gui_window *, char *, char, char *, char *,
char *, char *);