From 0ced4181b032249a5ccab2a6ae1d61bf08f60293 Mon Sep 17 00:00:00 2001 From: Alexander Barton Date: Thu, 26 Dec 2002 16:25:43 +0000 Subject: [PATCH] - replaced all strncpy()'s and strncat()'s with strlcpy() and strlcat(). --- src/ngircd/channel.c | 13 ++++---- src/ngircd/client.c | 31 +++++++------------ src/ngircd/conf.c | 66 +++++++++++------------------------------ src/ngircd/hash.c | 6 ++-- src/ngircd/irc-server.c | 5 ++-- src/ngircd/lists.c | 27 +++++++---------- src/ngircd/ngircd.c | 16 +++++----- 7 files changed, 55 insertions(+), 109 deletions(-) diff --git a/src/ngircd/channel.c b/src/ngircd/channel.c index 7f37dba6..c5039894 100644 --- a/src/ngircd/channel.c +++ b/src/ngircd/channel.c @@ -17,7 +17,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: channel.c,v 1.39 2002/12/25 13:22:43 alex Exp $"; +static char UNUSED id[] = "$Id: channel.c,v 1.40 2002/12/26 16:25:43 alex Exp $"; #include "imp.h" #include @@ -629,8 +629,7 @@ Channel_SetTopic( CHANNEL *Chan, CHAR *Topic ) assert( Chan != NULL ); assert( Topic != NULL ); - strncpy( Chan->topic, Topic, CHANNEL_TOPIC_LEN - 1 ); - Chan->topic[CHANNEL_TOPIC_LEN - 1] = '\0'; + strlcpy( Chan->topic, Topic, sizeof( Chan->topic )); } /* Channel_SetTopic */ @@ -640,8 +639,7 @@ Channel_SetModes( CHANNEL *Chan, CHAR *Modes ) assert( Chan != NULL ); assert( Modes != NULL ); - strncpy( Chan->modes, Modes, CHANNEL_MODE_LEN - 1 ); - Chan->topic[CHANNEL_MODE_LEN - 1] = '\0'; + strlcpy( Chan->modes, Modes, sizeof( Chan->modes )); } /* Channel_SetModes */ @@ -651,8 +649,7 @@ Channel_SetKey( CHANNEL *Chan, CHAR *Key ) assert( Chan != NULL ); assert( Key != NULL ); - strncpy( Chan->key, Key, CLIENT_PASS_LEN - 1 ); - Chan->key[CLIENT_PASS_LEN - 1] = '\0'; + strlcpy( Chan->key, Key, sizeof( Chan->key )); Log( LOG_DEBUG, "Channel %s: Key is now \"%s\".", Chan->name, Chan->key ); } /* Channel_SetKey */ @@ -710,7 +707,7 @@ Channel_Create( CHAR *Name ) return NULL; } c->next = NULL; - strncpy( c->name, Name, CHANNEL_NAME_LEN - 1 ); + strlcpy( c->name, Name, sizeof( c->name )); c->name[CHANNEL_NAME_LEN - 1] = '\0'; strcpy( c->modes, "" ); strcpy( c->topic, "" ); diff --git a/src/ngircd/client.c b/src/ngircd/client.c index dee2ada5..6ca7f687 100644 --- a/src/ngircd/client.c +++ b/src/ngircd/client.c @@ -17,7 +17,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: client.c,v 1.67 2002/12/22 23:29:09 alex Exp $"; +static char UNUSED id[] = "$Id: client.c,v 1.68 2002/12/26 16:25:43 alex Exp $"; #include "imp.h" #include @@ -300,8 +300,7 @@ Client_SetHostname( CLIENT *Client, CHAR *Hostname ) assert( Client != NULL ); assert( Hostname != NULL ); - strncpy( Client->host, Hostname, CLIENT_HOST_LEN - 1 ); - Client->host[CLIENT_HOST_LEN - 1] = '\0'; + strlcpy( Client->host, Hostname, sizeof( Client->host )); } /* Client_SetHostname */ @@ -313,8 +312,7 @@ Client_SetID( CLIENT *Client, CHAR *ID ) assert( Client != NULL ); assert( ID != NULL ); - strncpy( Client->id, ID, CLIENT_ID_LEN - 1 ); - Client->id[CLIENT_ID_LEN - 1] = '\0'; + strlcpy( Client->id, ID, sizeof( Client->id )); /* Hash */ Client->hash = Hash( Client->id ); @@ -329,13 +327,12 @@ Client_SetUser( CLIENT *Client, CHAR *User, BOOLEAN Idented ) assert( Client != NULL ); assert( User != NULL ); - if( Idented ) strncpy( Client->user, User, CLIENT_USER_LEN - 1 ); + if( Idented ) strlcpy( Client->user, User, sizeof( Client->user )); else { Client->user[0] = '~'; - strncpy( Client->user + 1, User, CLIENT_USER_LEN - 2 ); + strlcpy( Client->user + 1, User, sizeof( Client->user ) - 1 ); } - Client->user[CLIENT_USER_LEN - 1] = '\0'; } /* Client_SetUser */ @@ -347,8 +344,7 @@ Client_SetInfo( CLIENT *Client, CHAR *Info ) assert( Client != NULL ); assert( Info != NULL ); - strncpy( Client->info, Info, CLIENT_INFO_LEN - 1 ); - Client->info[CLIENT_INFO_LEN - 1] = '\0'; + strlcpy( Client->info, Info, sizeof( Client->info )); } /* Client_SetInfo */ @@ -360,8 +356,7 @@ Client_SetModes( CLIENT *Client, CHAR *Modes ) assert( Client != NULL ); assert( Modes != NULL ); - strncpy( Client->modes, Modes, CLIENT_MODE_LEN - 1 ); - Client->modes[CLIENT_MODE_LEN - 1] = '\0'; + strlcpy( Client->modes, Modes, sizeof( Client->modes )); } /* Client_SetModes */ @@ -373,8 +368,7 @@ Client_SetFlags( CLIENT *Client, CHAR *Flags ) assert( Client != NULL ); assert( Flags != NULL ); - strncpy( Client->flags, Flags, CLIENT_FLAGS_LEN - 1 ); - Client->flags[CLIENT_FLAGS_LEN - 1] = '\0'; + strlcpy( Client->flags, Flags, sizeof( Client->flags )); } /* Client_SetFlags */ @@ -386,8 +380,7 @@ Client_SetPassword( CLIENT *Client, CHAR *Pwd ) assert( Client != NULL ); assert( Pwd != NULL ); - strncpy( Client->pwd, Pwd, CLIENT_PASS_LEN - 1 ); - Client->pwd[CLIENT_PASS_LEN - 1] = '\0'; + strlcpy( Client->pwd, Pwd, sizeof( Client->pwd )); } /* Client_SetPassword */ @@ -401,8 +394,7 @@ Client_SetAway( CLIENT *Client, CHAR *Txt ) if( Txt ) { /* Client AWAY setzen */ - strncpy( Client->away, Txt, CLIENT_AWAY_LEN - 1 ); - Client->away[CLIENT_AWAY_LEN - 1] = '\0'; + strlcpy( Client->away, Txt, sizeof( Client->away )); Client_ModeAdd( Client, 'a' ); Log( LOG_DEBUG, "User \"%s\" is away: %s", Client_Mask( Client ), Txt ); } @@ -539,8 +531,7 @@ Client_Search( CHAR *Nick ) assert( Nick != NULL ); /* Nick kopieren und ggf. Host-Mask abschneiden */ - strncpy( search_id, Nick, CLIENT_ID_LEN - 1 ); - search_id[CLIENT_ID_LEN - 1] = '\0'; + strlcpy( search_id, Nick, sizeof( search_id )); ptr = strchr( search_id, '!' ); if( ptr ) *ptr = '\0'; diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c index 08c4e9ae..7ad9ddd7 100644 --- a/src/ngircd/conf.c +++ b/src/ngircd/conf.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: conf.c,v 1.48 2002/12/26 13:17:56 alex Exp $"; +static char UNUSED id[] = "$Id: conf.c,v 1.49 2002/12/26 16:25:43 alex Exp $"; #include "imp.h" #include @@ -330,49 +330,37 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg ) if( strcasecmp( Var, "Name" ) == 0 ) { /* Server name */ - strncpy( Conf_ServerName, Arg, CLIENT_ID_LEN - 1 ); - Conf_ServerName[CLIENT_ID_LEN - 1] = '\0'; - if( strlen( Arg ) > CLIENT_ID_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Name\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_ServerName, Arg, sizeof( Conf_ServerName )) >= sizeof( Conf_ServerName )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Name\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "Info" ) == 0 ) { /* Info text of server */ - strncpy( Conf_ServerInfo, Arg, CLIENT_INFO_LEN - 1 ); - Conf_ServerInfo[CLIENT_INFO_LEN - 1] = '\0'; - if( strlen( Arg ) > CLIENT_INFO_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Info\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_ServerInfo, Arg, sizeof( Conf_ServerInfo )) >= sizeof( Conf_ServerInfo )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Info\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "Password" ) == 0 ) { /* Global server password */ - strncpy( Conf_ServerPwd, Arg, CLIENT_PASS_LEN - 1 ); - Conf_ServerPwd[CLIENT_PASS_LEN - 1] = '\0'; - if( strlen( Arg ) > CLIENT_PASS_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Password\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_ServerPwd, Arg, sizeof( Conf_ServerPwd )) >= sizeof( Conf_ServerPwd )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Password\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "AdminInfo1" ) == 0 ) { /* Administrative info #1 */ - strncpy( Conf_ServerAdmin1, Arg, CLIENT_INFO_LEN - 1 ); - Conf_ServerAdmin1[CLIENT_INFO_LEN - 1] = '\0'; - if( strlen( Arg ) > CLIENT_INFO_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"AdminInfo1\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_ServerAdmin1, Arg, sizeof( Conf_ServerAdmin1 )) >= sizeof( Conf_ServerAdmin1 )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"AdminInfo1\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "AdminInfo2" ) == 0 ) { /* Administrative info #2 */ - strncpy( Conf_ServerAdmin2, Arg, CLIENT_INFO_LEN - 1 ); - Conf_ServerAdmin2[CLIENT_INFO_LEN - 1] = '\0'; - if( strlen( Arg ) > CLIENT_INFO_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"AdminInfo2\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_ServerAdmin2, Arg, sizeof( Conf_ServerAdmin2 )) >= sizeof( Conf_ServerAdmin2 )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"AdminInfo2\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "AdminEMail" ) == 0 ) { /* Administrative email contact */ - strncpy( Conf_ServerAdminMail, Arg, CLIENT_INFO_LEN - 1 ); - Conf_ServerAdminMail[CLIENT_INFO_LEN - 1] = '\0'; - if( strlen( Arg ) > CLIENT_INFO_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"AdminEMail\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_ServerAdminMail, Arg, sizeof( Conf_ServerAdminMail )) >= sizeof( Conf_ServerAdminMail )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"AdminEMail\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "Ports" ) == 0 ) @@ -397,9 +385,7 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg ) if( strcasecmp( Var, "MotdFile" ) == 0 ) { /* "Message of the day" (MOTD) file */ - strncpy( Conf_MotdFile, Arg, FNAME_LEN - 1 ); - Conf_MotdFile[FNAME_LEN - 1] = '\0'; - if( strlen( Arg ) > FNAME_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MotdFile\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_MotdFile, Arg, sizeof( Conf_MotdFile )) >= sizeof( Conf_MotdFile )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MotdFile\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "ServerUID" ) == 0 ) @@ -510,17 +496,13 @@ Handle_OPERATOR( INT Line, CHAR *Var, CHAR *Arg ) if( strcasecmp( Var, "Name" ) == 0 ) { /* Name of IRC operator */ - strncpy( Conf_Oper[Conf_Oper_Count - 1].name, Arg, CLIENT_PASS_LEN - 1 ); - Conf_Oper[Conf_Oper_Count - 1].name[CLIENT_PASS_LEN - 1] = '\0'; - if( strlen( Arg ) > CLIENT_PASS_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Name\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_Oper[Conf_Oper_Count - 1].name, Arg, sizeof( Conf_Oper[Conf_Oper_Count - 1].name )) >= sizeof( Conf_Oper[Conf_Oper_Count - 1].name )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Name\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "Password" ) == 0 ) { /* Password of IRC operator */ - strncpy( Conf_Oper[Conf_Oper_Count - 1].pwd, Arg, CLIENT_PASS_LEN - 1 ); - Conf_Oper[Conf_Oper_Count - 1].pwd[CLIENT_PASS_LEN - 1] = '\0'; - if( strlen( Arg ) > CLIENT_PASS_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Password\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_Oper[Conf_Oper_Count - 1].pwd, Arg, sizeof( Conf_Oper[Conf_Oper_Count - 1].pwd )) >= sizeof( Conf_Oper[Conf_Oper_Count - 1].pwd )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Password\" too long!", NGIRCd_ConfFile, Line ); return; } @@ -540,33 +522,25 @@ Handle_SERVER( INT Line, CHAR *Var, CHAR *Arg ) if( strcasecmp( Var, "Host" ) == 0 ) { /* Hostname of the server */ - strncpy( Conf_Server[Conf_Server_Count - 1].host, Arg, HOST_LEN - 1 ); - Conf_Server[Conf_Server_Count - 1].host[HOST_LEN - 1] = '\0'; - if( strlen( Arg ) > HOST_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Host\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_Server[Conf_Server_Count - 1].host, Arg, sizeof( Conf_Server[Conf_Server_Count - 1].host )) >= sizeof( Conf_Server[Conf_Server_Count - 1].host )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Host\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "Name" ) == 0 ) { /* Name of the server ("Nick"/"ID") */ - strncpy( Conf_Server[Conf_Server_Count - 1].name, Arg, CLIENT_ID_LEN - 1 ); - Conf_Server[Conf_Server_Count - 1].name[CLIENT_ID_LEN - 1] = '\0'; - if( strlen( Arg ) > CLIENT_ID_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Name\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_Server[Conf_Server_Count - 1].name, Arg, sizeof( Conf_Server[Conf_Server_Count - 1].name )) >= sizeof( Conf_Server[Conf_Server_Count - 1].name )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Name\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "MyPassword" ) == 0 ) { /* Password of this server which is sent to the peer */ - strncpy( Conf_Server[Conf_Server_Count - 1].pwd_in, Arg, CLIENT_PASS_LEN - 1 ); - Conf_Server[Conf_Server_Count - 1].pwd_in[CLIENT_PASS_LEN - 1] = '\0'; - if( strlen( Arg ) > CLIENT_PASS_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MyPassword\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_Server[Conf_Server_Count - 1].pwd_in, Arg, sizeof( Conf_Server[Conf_Server_Count - 1].pwd_in )) >= sizeof( Conf_Server[Conf_Server_Count - 1].pwd_in )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MyPassword\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "PeerPassword" ) == 0 ) { /* Passwort of the peer which must be received */ - strncpy( Conf_Server[Conf_Server_Count - 1].pwd_out, Arg, CLIENT_PASS_LEN - 1 ); - Conf_Server[Conf_Server_Count - 1].pwd_out[CLIENT_PASS_LEN - 1] = '\0'; - if( strlen( Arg ) > CLIENT_PASS_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"PeerPassword\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_Server[Conf_Server_Count - 1].pwd_out, Arg, sizeof( Conf_Server[Conf_Server_Count - 1].pwd_out )) >= sizeof( Conf_Server[Conf_Server_Count - 1].pwd_out )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"PeerPassword\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "Port" ) == 0 ) @@ -602,25 +576,19 @@ Handle_CHANNEL( INT Line, CHAR *Var, CHAR *Arg ) if( strcasecmp( Var, "Name" ) == 0 ) { /* Name of the channel */ - strncpy( Conf_Channel[Conf_Channel_Count - 1].name, Arg, CHANNEL_NAME_LEN - 1 ); - Conf_Channel[Conf_Channel_Count - 1].name[CHANNEL_NAME_LEN - 1] = '\0'; - if( strlen( Arg ) > CHANNEL_NAME_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Name\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_Channel[Conf_Channel_Count - 1].name, Arg, sizeof( Conf_Channel[Conf_Channel_Count - 1].name )) >= sizeof( Conf_Channel[Conf_Channel_Count - 1].name )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Name\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "Modes" ) == 0 ) { /* Initial modes */ - strncpy( Conf_Channel[Conf_Channel_Count - 1].modes, Arg, CHANNEL_MODE_LEN - 1 ); - Conf_Channel[Conf_Channel_Count - 1].modes[CHANNEL_MODE_LEN - 1] = '\0'; - if( strlen( Arg ) > CHANNEL_MODE_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Modes\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_Channel[Conf_Channel_Count - 1].modes, Arg, sizeof( Conf_Channel[Conf_Channel_Count - 1].modes )) >= sizeof( Conf_Channel[Conf_Channel_Count - 1].modes )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Modes\" too long!", NGIRCd_ConfFile, Line ); return; } if( strcasecmp( Var, "Topic" ) == 0 ) { /* Initial topic */ - strncpy( Conf_Channel[Conf_Channel_Count - 1].topic, Arg, CHANNEL_TOPIC_LEN - 1 ); - Conf_Channel[Conf_Channel_Count - 1].topic[CHANNEL_TOPIC_LEN - 1] = '\0'; - if( strlen( Arg ) > CHANNEL_TOPIC_LEN - 1 ) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Topic\" too long!", NGIRCd_ConfFile, Line ); + if( strlcpy( Conf_Channel[Conf_Channel_Count - 1].topic, Arg, sizeof( Conf_Channel[Conf_Channel_Count - 1].topic )) >= sizeof( Conf_Channel[Conf_Channel_Count - 1].topic )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Topic\" too long!", NGIRCd_ConfFile, Line ); return; } diff --git a/src/ngircd/hash.c b/src/ngircd/hash.c index 59cba404..820c8f68 100644 --- a/src/ngircd/hash.c +++ b/src/ngircd/hash.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: hash.c,v 1.8 2002/12/26 13:16:54 alex Exp $"; +static char UNUSED id[] = "$Id: hash.c,v 1.9 2002/12/26 16:25:43 alex Exp $"; #include "imp.h" #include @@ -38,9 +38,7 @@ Hash( CHAR *String ) CHAR buffer[LINE_LEN]; - strncpy( buffer, String, LINE_LEN - 1 ); - buffer[LINE_LEN - 1] = '\0'; - + strlcpy( buffer, String, sizeof( buffer )); return jenkins_hash( (UINT8 *)ngt_LowerStr( buffer ), strlen( buffer ), 42 ); } /* Hash */ diff --git a/src/ngircd/irc-server.c b/src/ngircd/irc-server.c index e5846dd4..0be66783 100644 --- a/src/ngircd/irc-server.c +++ b/src/ngircd/irc-server.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: irc-server.c,v 1.24 2002/12/12 12:24:18 alex Exp $"; +static char UNUSED id[] = "$Id: irc-server.c,v 1.25 2002/12/26 16:25:43 alex Exp $"; #include "imp.h" #include @@ -284,8 +284,7 @@ IRC_NJOIN( CLIENT *Client, REQUEST *Req ) /* Falsche Anzahl Parameter? */ if( Req->argc != 2 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command ); - strncpy( str, Req->argv[1], COMMAND_LEN - 1 ); - str[COMMAND_LEN - 1] = '\0'; + strlcpy( str, Req->argv[1], sizeof( str )); channame = Req->argv[0]; ptr = strtok( str, "," ); diff --git a/src/ngircd/lists.c b/src/ngircd/lists.c index e3020634..f6e710c6 100644 --- a/src/ngircd/lists.c +++ b/src/ngircd/lists.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: lists.c,v 1.10 2002/12/12 12:24:18 alex Exp $"; +static char UNUSED id[] = "$Id: lists.c,v 1.11 2002/12/26 16:25:43 alex Exp $"; #include "imp.h" #include @@ -331,19 +331,17 @@ Lists_MakeMask( CHAR *Pattern ) if(( ! at ) && ( ! excl )) { - /* weder ! noch @ĂŠvorhanden: als Nick annehmen */ - strncpy( TheMask, Pattern, MASK_LEN - 5 ); - TheMask[MASK_LEN - 5] = '\0'; - strcat( TheMask, "!*@*" ); + /* weder ! noch @ vorhanden: als Nick annehmen */ + strlcpy( TheMask, Pattern, sizeof( TheMask ) - 5 ); + strlcat( TheMask, "!*@*", sizeof( TheMask )); return TheMask; } if(( ! at ) && ( excl )) { /* Domain fehlt */ - strncpy( TheMask, Pattern, MASK_LEN - 3 ); - TheMask[MASK_LEN - 3] = '\0'; - strcat( TheMask, "@*" ); + strlcpy( TheMask, Pattern, sizeof( TheMask ) - 3 ); + strlcat( TheMask, "@*", sizeof( TheMask )); return TheMask; } @@ -351,17 +349,14 @@ Lists_MakeMask( CHAR *Pattern ) { /* User fehlt */ *at = '\0'; at++; - strncpy( TheMask, Pattern, MASK_LEN - 4 ); - TheMask[MASK_LEN - 4] = '\0'; - strcat( TheMask, "!*@" ); - strncat( TheMask, at, strlen( TheMask ) - MASK_LEN - 1 ); - TheMask[MASK_LEN - 1] = '\0'; + strlcpy( TheMask, Pattern, sizeof( TheMask ) - strlen( at ) - 4 ); + strlcat( TheMask, "!*@", sizeof( TheMask )); + strlcat( TheMask, at, sizeof( TheMask )); return TheMask; } /* alle Teile vorhanden */ - strncpy( TheMask, Pattern, MASK_LEN - 1 ); - TheMask[MASK_LEN - 1] = '\0'; + strlcpy( TheMask, Pattern, sizeof( TheMask )); return TheMask; } /* Lists_MakeMask */ @@ -382,7 +377,7 @@ New_C2C( CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce ) return NULL; } - strncpy( c2c->mask, Mask, MASK_LEN ); + strlcpy( c2c->mask, Mask, sizeof( c2c->mask )); c2c->channel = Chan; c2c->onlyonce = OnlyOnce; diff --git a/src/ngircd/ngircd.c b/src/ngircd/ngircd.c index 4690e7dd..92f1a3e2 100644 --- a/src/ngircd/ngircd.c +++ b/src/ngircd/ngircd.c @@ -14,7 +14,7 @@ #include "portab.h" -static char UNUSED id[] = "$Id: ngircd.c,v 1.66 2002/12/26 13:17:57 alex Exp $"; +static char UNUSED id[] = "$Id: ngircd.c,v 1.67 2002/12/26 16:25:43 alex Exp $"; #include "imp.h" #include @@ -88,11 +88,10 @@ main( int argc, const char *argv[] ) { if( i + 1 < argc ) { - /* Ok, danach kommt noch ein Parameter */ - strncpy( NGIRCd_ConfFile, argv[i + 1], FNAME_LEN - 1 ); - NGIRCd_ConfFile[FNAME_LEN - 1] = '\0'; + /* Ok, there's an parameter left */ + strlcpy( NGIRCd_ConfFile, argv[i + 1], sizeof( NGIRCd_ConfFile )); - /* zum uebernaechsten Parameter */ + /* next parameter */ i++; ok = TRUE; } } @@ -155,11 +154,10 @@ main( int argc, const char *argv[] ) { if(( ! argv[i][n + 1] ) && ( i + 1 < argc )) { - /* Ok, danach kommt ein Leerzeichen */ - strncpy( NGIRCd_ConfFile, argv[i + 1], FNAME_LEN - 1 ); - NGIRCd_ConfFile[FNAME_LEN - 1] = '\0'; + /* Ok, next character is a blank */ + strlcpy( NGIRCd_ConfFile, argv[i + 1], sizeof( NGIRCd_ConfFile )); - /* zum uebernaechsten Parameter */ + /* go to the following parameter */ i++; n = (LONG)strlen( argv[i] ); ok = TRUE; } -- 2.39.2