aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitlbee.c3
-rw-r--r--help.c5
-rw-r--r--irc_send.c21
-rw-r--r--motd.txt1
-rw-r--r--protocols/oscar/ssi.c2
-rw-r--r--unix.c2
6 files changed, 22 insertions, 12 deletions
diff --git a/bitlbee.c b/bitlbee.c
index ac22932f..d53bfe71 100644
--- a/bitlbee.c
+++ b/bitlbee.c
@@ -135,7 +135,8 @@ int bitlbee_daemon_init()
exit( 0 );
setsid();
- chdir( "/" );
+ i = chdir( "/" );
+ /* Don't use i, just make gcc happy. :-/ */
if( getenv( "_BITLBEE_RESTART_STATE" ) == NULL )
for( i = 0; i < 3; i ++ )
diff --git a/help.c b/help.c
index c43d0459..14156eaf 100644
--- a/help.c
+++ b/help.c
@@ -156,8 +156,9 @@ char *help_get( help_t **help, char *title )
return NULL;
}
- lseek( h->fd, h->offset.file_offset, SEEK_SET );
- read( h->fd, s, h->length );
+ if( lseek( h->fd, h->offset.file_offset, SEEK_SET ) == -1 ||
+ read( h->fd, s, h->length ) != h->length )
+ return NULL;
}
else
{
diff --git a/irc_send.c b/irc_send.c
index fa4e6815..76b88118 100644
--- a/irc_send.c
+++ b/irc_send.c
@@ -52,24 +52,27 @@ void irc_send_login( irc_t *irc )
void irc_send_motd( irc_t *irc )
{
+ char motd[2048];
+ size_t len;
int fd;
fd = open( global.conf->motdfile, O_RDONLY );
- if( fd == -1 )
+ if( fd == -1 || ( len = read( fd, motd, sizeof( motd ) - 1 ) ) <= 0 )
{
irc_send_num( irc, 422, ":We don't need MOTDs." );
}
else
{
- char linebuf[80]; /* Max. line length for MOTD's is 79 chars. It's what most IRC networks seem to do. */
- char *add, max;
- int len;
+ char linebuf[80];
+ char *add, max, *in;
+ in = motd;
+ motd[len] = '\0';
linebuf[79] = len = 0;
max = sizeof( linebuf ) - 1;
irc_send_num( irc, 375, ":- %s Message Of The Day - ", irc->root->host );
- while( read( fd, linebuf + len, 1 ) == 1 )
+ while( ( linebuf[len] = *(in++) ) )
{
if( linebuf[len] == '\n' || len == max )
{
@@ -79,13 +82,15 @@ void irc_send_motd( irc_t *irc )
}
else if( linebuf[len] == '%' )
{
- read( fd, linebuf + len, 1 );
+ linebuf[len] = *(in++);
if( linebuf[len] == 'h' )
add = irc->root->host;
else if( linebuf[len] == 'v' )
add = BITLBEE_VERSION;
else if( linebuf[len] == 'n' )
add = irc->user->nick;
+ else if( linebuf[len] == '\0' )
+ in --;
else
add = "%";
@@ -98,8 +103,10 @@ void irc_send_motd( irc_t *irc )
}
}
irc_send_num( irc, 376, ":End of MOTD" );
- close( fd );
}
+
+ if( fd != -1 )
+ close( fd );
}
void irc_usermsg( irc_t *irc, char *format, ... )
diff --git a/motd.txt b/motd.txt
index 9e854d54..a15067ab 100644
--- a/motd.txt
+++ b/motd.txt
@@ -16,3 +16,4 @@ The developers of the Bee hope you have a buzzing time.
* BitlBee development team: wilmer, jelmer, Maurits
... Buzzing, haha, get it?
+% \ No newline at end of file
diff --git a/protocols/oscar/ssi.c b/protocols/oscar/ssi.c
index 76b5b427..f37d98e5 100644
--- a/protocols/oscar/ssi.c
+++ b/protocols/oscar/ssi.c
@@ -414,7 +414,7 @@ int aim_ssi_cleanlist(aim_session_t *sess, aim_conn_t *conn)
for (parentgroup=sess->ssi.items; ((parentgroup) && (parentgroup->type!=AIM_SSI_TYPE_GROUP) && (parentgroup->gid==0x0000)); parentgroup=parentgroup->next);
if (!parentgroup) {
char *newgroup;
- newgroup = (char*)g_malloc(strlen("Unknown")*sizeof(char));
+ newgroup = (char*)g_malloc(strlen("Unknown")+1);
strcpy(newgroup, "Unknown");
aim_ssi_addgroups(sess, conn, &newgroup, 1);
}
diff --git a/unix.c b/unix.c
index c3ecbc99..0d373234 100644
--- a/unix.c
+++ b/unix.c
@@ -166,7 +166,7 @@ int main( int argc, char *argv[] )
/* Looks like env should *not* be freed here as putenv
doesn't make a copy. Odd. */
- chdir( old_cwd );
+ i = chdir( old_cwd );
close( global.listen_socket );
if( execv( argv[0], argv ) == -1 )