$OpenBSD: patch-set_c,v 1.2 2007/01/14 21:53:01 simon Exp $ --- set.c.orig Sat Jun 24 17:00:43 2006 +++ set.c Fri Dec 15 21:20:08 2006 @@ -35,14 +35,20 @@ set_t *set_add( irc_t *irc, char *key, c { while( s->next ) s = s->next; s->next = g_new ( set_t, 1 ); + if (!s->next) + return NULL; s = s->next; } else { s = irc->set = g_new( set_t, 1 ); + if (!s) + return NULL; } memset( s, 0, sizeof( set_t ) ); s->key = g_strdup( key ); + if (!s->key) + return NULL; } if( s->def ) @@ -133,7 +139,7 @@ int set_setint( irc_t *irc, char *key, i { char s[24]; /* Not quite 128-bit clean eh? ;-) */ - sprintf( s, "%d", value ); + snprintf( s, sizeof(s), "%d", value ); return( set_setstr( irc, key, s ) ); } @@ -183,12 +189,16 @@ char *set_eval_bool( irc_t *irc, set_t * char *set_eval_to_char( irc_t *irc, set_t *set, char *value ) { - char *s = g_new( char, 3 ); + size_t s_len = 3; + char *s = g_new( char, s_len ); + + if (!s) + return NULL; if( *value == ' ' ) - strcpy( s, " " ); + strlcpy( s, " ", s_len ); else - sprintf( s, "%c ", *value ); + g_snprintf( s, s_len, "%c ", *value ); return( s ); } @@ -201,7 +211,7 @@ char *set_eval_ops( irc_t *irc, set_t *s irc->channel, "+o-o", irc->nick, irc->mynick ); return( value ); } - else if( g_strcasecmp( value, "root" ) == 0 ) + else if( g_strcasecmp( value, ROOT_NICK ) == 0 || g_strcasecmp( value, "root" ) == 0 ) { irc_write( irc, ":%s!%s@%s MODE %s %s %s %s", irc->mynick, irc->mynick, irc->myhost, irc->channel, "-o+o", irc->nick, irc->mynick );