diff -ru sbin/savecore.orig/savecore.c sbin/savecore/savecore.c --- sbin/savecore.orig/savecore.c 2004-02-04 15:40:01.000000000 -0200 +++ sbin/savecore/savecore.c 2004-10-26 14:17:47.398061283 -0300 @@ -524,19 +524,21 @@ find_dev(register dev_t dev) { struct dirent *ent; + size_t devlen; char *dn, *dnp; DIR *d; - strcpy(ddname, _PATH_DEV); - dnp = ddname + sizeof _PATH_DEV - 1; + strlcpy(ddname, _PATH_DEV, sizeof(ddname)); + devlen = sizeof(_PATH_DEV) - 1; + dnp = ddname + devlen; if ((dn = devname(dev, S_IFCHR)) != NULL) { - strcpy(dnp, dn); + strlcpy(dnp, dn, sizeof(ddname) - devlen); if (verify_dev(ddname, dev) == 0) return; } if ((d = opendir(_PATH_DEV)) != NULL) { while ((ent = readdir(d))) { - strcpy(dnp, ent->d_name); + strlcpy(dnp, ent->d_name, sizeof(ddname) - devlen); if (verify_dev(ddname, dev) == 0) { closedir(d); return; @@ -544,7 +546,7 @@ } closedir(d); } - strcpy(dnp, "dump"); + strlcpy(dnp, "dump", sizeof(ddname) - devlen); if (mknod(ddname, S_IFCHR|S_IRUSR|S_IWUSR, dev) == 0) return; syslog(LOG_ERR, "can't find device %d/%#x", major(dev), minor(dev));