diff --git a/libexec/pppoed/pppoed.c b/libexec/pppoed/pppoed.c index c82d305aec3b..aae546cea6bd 100644 --- a/libexec/pppoed/pppoed.c +++ b/libexec/pppoed/pppoed.c @@ -232,7 +232,8 @@ ConfigureNode(const char *prog, const char *iface, const char *provider, data = (struct ngpppoe_init_data *)alloca(sizeof *data + plen); snprintf(data->hook, sizeof data->hook, "%s", ngc->peerhook); - strcpy(data->data, provider); + memcpy(data->data, provider, plen); + data->data_len = plen; spath = (char *)alloca(strlen(ngc->peerhook) + 3); strcpy(spath, ".:"); @@ -324,7 +325,8 @@ Spawn(const char *prog, const char *acname, const char *exec, slen = strlen(acname); data = (struct ngpppoe_init_data *)alloca(sizeof *data + slen); snprintf(data->hook, sizeof data->hook, "%s", ngc.ourhook); - strcpy(data->data, acname); + memcpy(data->data, acname, slen); + data->data_len = slen; path = (char *)alloca(strlen(ngc.ourhook) + 3); strcpy(path, ".:"); diff --git a/usr.sbin/ppp/ether.c b/usr.sbin/ppp/ether.c index b54ef0ad72e4..cf9c999e11a1 100644 --- a/usr.sbin/ppp/ether.c +++ b/usr.sbin/ppp/ether.c @@ -585,9 +585,9 @@ ether_Create(struct physical *p) /* And finally, request a connection to the given provider */ data = (struct ngpppoe_init_data *)alloca(sizeof *data + providerlen); - snprintf(data->hook, sizeof data->hook, "%s", dev->hook); - strcpy(data->data, provider); + memcpy(data->data, provider, providerlen); + data->data_len = providerlen; snprintf(connectpath, sizeof connectpath, ".:%s", dev->hook); log_Printf(LogDEBUG, "Sending PPPOE_CONNECT to %s\n", connectpath);