From 56a81f02b843652ea73abebf49ad4918ae747508 Mon Sep 17 00:00:00 2001 From: Logan oos Even <46396513+Logan007@users.noreply.github.com> Date: Sun, 26 Sep 2021 00:17:47 +0545 Subject: [PATCH] fixes (#819) --- src/edge.c | 6 ++---- src/edge_utils.c | 8 ++++---- src/sn_utils.c | 7 ++++--- src/supernode.c | 5 +++-- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/edge.c b/src/edge.c index 8c3639f..7ddd3ad 100644 --- a/src/edge.c +++ b/src/edge.c @@ -434,7 +434,6 @@ static int setOption (int optkey, char *optargument, n2n_tuntap_priv_config_t *e } case 'c': /* community as a string */ { - memset(conf->community_name, 0, N2N_COMMUNITY_SIZE); strncpy((char *)conf->community_name, optargument, N2N_COMMUNITY_SIZE); conf->community_name[N2N_COMMUNITY_SIZE - 1] = '\0'; break; @@ -559,9 +558,8 @@ static int setOption (int optkey, char *optargument, n2n_tuntap_priv_config_t *e } #endif case 'I': /* Device Description (hint) or username */ { - memset(conf->dev_desc, 0, N2N_DESC_SIZE); - /* reserve possible last char as null terminator. */ - strncpy((char *)conf->dev_desc, optargument, N2N_DESC_SIZE-1); + strncpy((char *)conf->dev_desc, optargument, N2N_DESC_SIZE); + conf->dev_desc[N2N_DESC_SIZE - 1] = '\0'; break; } diff --git a/src/edge_utils.c b/src/edge_utils.c index fca51e8..7c8641f 100644 --- a/src/edge_utils.c +++ b/src/edge_utils.c @@ -2697,13 +2697,13 @@ void process_udp (n2n_edge_t *eee, const struct sockaddr_in *sender_sock, const if((ra.dev_addr.net_addr != 0) && (ra.dev_addr.net_bitlen != 0)) { net = htonl(ra.dev_addr.net_addr); if((ip_str = inet_ntoa(*(struct in_addr *) &net)) != NULL) { - strncpy(eee->tuntap_priv_conf.ip_addr, ip_str, N2N_NETMASK_STR_SIZE-1); - eee->tuntap_priv_conf.ip_addr[N2N_NETMASK_STR_SIZE-1] = '\0'; + strncpy(eee->tuntap_priv_conf.ip_addr, ip_str, N2N_NETMASK_STR_SIZE); + eee->tuntap_priv_conf.ip_addr[N2N_NETMASK_STR_SIZE - 1] = '\0'; } net = htonl(bitlen2mask(ra.dev_addr.net_bitlen)); if((ip_str = inet_ntoa(*(struct in_addr *) &net)) != NULL) { - strncpy(eee->tuntap_priv_conf.netmask, ip_str, N2N_NETMASK_STR_SIZE-1); - eee->tuntap_priv_conf.netmask[N2N_NETMASK_STR_SIZE-1] = '\0'; + strncpy(eee->tuntap_priv_conf.netmask, ip_str, N2N_NETMASK_STR_SIZE); + eee->tuntap_priv_conf.netmask[N2N_NETMASK_STR_SIZE - 1] = '\0'; } } } diff --git a/src/sn_utils.c b/src/sn_utils.c index 448050e..b0d1061 100644 --- a/src/sn_utils.c +++ b/src/sn_utils.c @@ -720,7 +720,7 @@ static int try_forward (n2n_sn_t * sss, /** Initialise some fields of the community structure **/ int comm_init (struct sn_community *comm, char *cmn) { - strncpy((char*)comm->community, cmn, N2N_COMMUNITY_SIZE - 1); + strncpy((char*)comm->community, cmn, N2N_COMMUNITY_SIZE); comm->community[N2N_COMMUNITY_SIZE - 1] = '\0'; comm->is_federation = IS_NO_FEDERATION; @@ -738,7 +738,8 @@ int sn_init_defaults (n2n_sn_t *sss) { memset(sss, 0, sizeof(n2n_sn_t)); - strncpy(sss->version, GIT_RELEASE, sizeof(n2n_version_t) - 1); + strncpy(sss->version, GIT_RELEASE, sizeof(n2n_version_t)); + sss->version[sizeof(n2n_version_t) - 1] = '\0'; sss->daemon = 1; /* By defult run as a daemon. */ sss->lport = N2N_SN_LPORT_DEFAULT; sss->mport = N2N_SN_MGMT_PORT; @@ -754,7 +755,7 @@ int sn_init_defaults (n2n_sn_t *sss) { /* Initialize the federation */ if(sss->federation) { - strncpy(sss->federation->community, (char*)FEDERATION_NAME, N2N_COMMUNITY_SIZE - 1); + strncpy(sss->federation->community, (char*)FEDERATION_NAME, N2N_COMMUNITY_SIZE); sss->federation->community[N2N_COMMUNITY_SIZE - 1] = '\0'; /* enable the flag for federation */ sss->federation->is_federation = IS_FEDERATION; diff --git a/src/supernode.c b/src/supernode.c index 4786d05..c6df9fd 100644 --- a/src/supernode.c +++ b/src/supernode.c @@ -217,7 +217,7 @@ static int setOption (int optkey, char *_optarg, n2n_sn_t *sss) { anchor_sn->ip_addr = calloc(1, N2N_EDGE_SN_HOST_SIZE); if(anchor_sn->ip_addr) { strncpy(anchor_sn->ip_addr, _optarg, N2N_EDGE_SN_HOST_SIZE - 1); - memcpy(&(anchor_sn->sock), socket, sizeof(n2n_sock_t)); + memcpy(&(anchor_sn->sock), socket, sizeof(n2n_sock_t)); memcpy(anchor_sn->mac_addr, null_mac, sizeof(n2n_mac_t)); anchor_sn->purgeable = SN_UNPURGEABLE; anchor_sn->last_valid_time_stamp = initial_time_stamp(); @@ -295,7 +295,8 @@ static int setOption (int optkey, char *_optarg, n2n_sn_t *sss) { break; case 'V': /* version text */ - strncpy(sss->version, _optarg, sizeof(n2n_version_t) - 1); /* mind the \0 terminator */ + strncpy(sss->version, _optarg, sizeof(n2n_version_t)); + sss->version[sizeof(n2n_version_t) - 1] = '\0'; break; case 'c': /* community file */ sss->community_file = calloc(1, strlen(_optarg) + 1);