diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2002-05-22 08:21:03 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2002-05-22 08:21:03 +0000 |
commit | f4157dcdc59508eeb6d7be5a9a2348bc1de796b2 (patch) | |
tree | aa1086c2b95d7fcd3877479cd899d19157069519 | |
parent | e2f0d51cf4e08e47c64eefc6043e0126ec941016 (diff) |
strcpy, sprintf death; mpech ok
-rw-r--r-- | sbin/disklabel/disklabel.c | 31 | ||||
-rw-r--r-- | sbin/disklabel/editor.c | 10 | ||||
-rw-r--r-- | sbin/fdisk/user.c | 4 | ||||
-rw-r--r-- | sbin/fsck_ffs/inode.c | 9 | ||||
-rw-r--r-- | sbin/ifconfig/ifconfig.c | 12 | ||||
-rw-r--r-- | sbin/init/init.c | 13 | ||||
-rw-r--r-- | sbin/kbd/kbd_wscons.c | 42 | ||||
-rw-r--r-- | sbin/mount_portal/mount_portal.c | 6 | ||||
-rw-r--r-- | sbin/ncheck_ffs/ncheck_ffs.c | 13 | ||||
-rw-r--r-- | sbin/newlfs/newfs.c | 6 | ||||
-rw-r--r-- | sbin/nfsd/nfsd.c | 4 | ||||
-rw-r--r-- | sbin/savecore/savecore.c | 11 |
12 files changed, 85 insertions, 76 deletions
diff --git a/sbin/disklabel/disklabel.c b/sbin/disklabel/disklabel.c index a914304e1fc..be2f6c2bd52 100644 --- a/sbin/disklabel/disklabel.c +++ b/sbin/disklabel/disklabel.c @@ -1,4 +1,4 @@ -/* $OpenBSD: disklabel.c,v 1.73 2002/03/24 22:51:54 millert Exp $ */ +/* $OpenBSD: disklabel.c,v 1.74 2002/05/22 08:21:01 deraadt Exp $ */ /* * Copyright (c) 1987, 1993 @@ -43,7 +43,7 @@ static const char copyright[] = #endif /* not lint */ #ifndef lint -static const char rcsid[] = "$OpenBSD: disklabel.c,v 1.73 2002/03/24 22:51:54 millert Exp $"; +static const char rcsid[] = "$OpenBSD: disklabel.c,v 1.74 2002/05/22 08:21:01 deraadt Exp $"; #endif /* not lint */ #include <sys/param.h> @@ -364,19 +364,19 @@ makelabel(type, name, lp) */ if (!xxboot && lp->d_boot0) { if (*lp->d_boot0 != '/') - (void)sprintf(boot0, "%s%s", - _PATH_BOOTDIR, lp->d_boot0); + (void)snprintf(boot0, sizeof boot0, "%s%s", + _PATH_BOOTDIR, lp->d_boot0); else - (void)strcpy(boot0, lp->d_boot0); + (void)strlcpy(boot0, lp->d_boot0, sizeof boot0); xxboot = boot0; } #if NUMBOOT > 1 if (!bootxx && lp->d_boot1) { if (*lp->d_boot1 != '/') - (void)sprintf(boot1, "%s%s", - _PATH_BOOTDIR, lp->d_boot1); + (void)snprintf(boot1, sizeof boot1, "%s%s", + _PATH_BOOTDIR, lp->d_boot1); else - (void)strcpy(boot1, lp->d_boot1); + (void)strlcpy(boot1, lp->d_boot1, sizeof boot1); bootxx = boot1; } #endif @@ -812,23 +812,23 @@ makebootarea(boot, dp, f) if (!xxboot) { (void)sprintf(np, "%s%sboot", - _PATH_BOOTDIR, dkbasename); + _PATH_BOOTDIR, dkbasename); if (access(np, F_OK) < 0 && dkbasename[0] == 'r') dkbasename++; xxboot = np; (void)sprintf(xxboot, "%s%sboot", - _PATH_BOOTDIR, dkbasename); + _PATH_BOOTDIR, dkbasename); np += strlen(xxboot) + 1; } #if NUMBOOT > 1 if (!bootxx) { (void)sprintf(np, "%sboot%s", - _PATH_BOOTDIR, dkbasename); + _PATH_BOOTDIR, dkbasename); if (access(np, F_OK) < 0 && dkbasename[0] == 'r') dkbasename++; bootxx = np; (void)sprintf(bootxx, "%sboot%s", - _PATH_BOOTDIR, dkbasename); + _PATH_BOOTDIR, dkbasename); np += strlen(bootxx) + 1; } #endif @@ -1208,19 +1208,20 @@ int editit() { pid_t pid, xpid; - int stat; + int stat, len; extern char *getenv(); char *argp[] = {"sh", "-c", NULL, NULL}; char *ed, *p; if ((ed = getenv("EDITOR")) == NULL) ed = _PATH_VI; - p = (char *)malloc(strlen(ed) + 1 + strlen(tmpfil) + 1); + len = strlen(ed) + 1 + strlen(tmpfil) + 1; + p = (char *)malloc(len); if (!p) { warn("failed to start editor"); return (0); } - sprintf(p, "%s %s", ed, tmpfil); + snprintf(p, len, "%s %s", ed, tmpfil); argp[2] = p; /* Turn off signals. */ diff --git a/sbin/disklabel/editor.c b/sbin/disklabel/editor.c index 7d4f1ed8177..3bcdb375d83 100644 --- a/sbin/disklabel/editor.c +++ b/sbin/disklabel/editor.c @@ -1,4 +1,4 @@ -/* $OpenBSD: editor.c,v 1.79 2002/02/16 21:27:33 millert Exp $ */ +/* $OpenBSD: editor.c,v 1.80 2002/05/22 08:21:01 deraadt Exp $ */ /* * Copyright (c) 1997-2000 Todd C. Miller <Todd.Miller@courtesan.com> @@ -28,7 +28,7 @@ */ #ifndef lint -static char rcsid[] = "$OpenBSD: editor.c,v 1.79 2002/02/16 21:27:33 millert Exp $"; +static char rcsid[] = "$OpenBSD: editor.c,v 1.80 2002/05/22 08:21:01 deraadt Exp $"; #endif /* not lint */ #include <sys/types.h> @@ -1959,10 +1959,12 @@ mpcopy(to, from) for (i = 0; i < MAXPARTITIONS; i++) { if (from[i] != NULL) { - to[i] = realloc(to[i], strlen(from[i]) + 1); + int len = strlen(from[i]) + 1; + + to[i] = realloc(to[i], len); if (to[i] == NULL) errx(4, "out of memory"); - (void)strcpy(to[i], from[i]); + (void)strlcpy(to[i], from[i], len); } else if (to[i] != NULL) { free(to[i]); to[i] = NULL; diff --git a/sbin/fdisk/user.c b/sbin/fdisk/user.c index edd343fd68b..a9e597ce340 100644 --- a/sbin/fdisk/user.c +++ b/sbin/fdisk/user.c @@ -1,4 +1,4 @@ -/* $OpenBSD: user.c,v 1.18 2002/01/18 08:38:26 kjell Exp $ */ +/* $OpenBSD: user.c,v 1.19 2002/05/22 08:21:02 deraadt Exp $ */ /* * Copyright (c) 1997 Tobias Weingartner @@ -157,7 +157,7 @@ again: printf("Invalid command '%s'. Try 'help'.\n", cmd.cmd); continue; } else - strcpy(cmd.cmd, cmd_table[i].cmd); + strlcpy(cmd.cmd, cmd_table[i].cmd, sizeof cmd.cmd); /* Call function */ st = cmd_table[i].fcn(&cmd, disk, &mbr, tt, offset); diff --git a/sbin/fsck_ffs/inode.c b/sbin/fsck_ffs/inode.c index 0a51822c76c..0e6f211f6a1 100644 --- a/sbin/fsck_ffs/inode.c +++ b/sbin/fsck_ffs/inode.c @@ -1,4 +1,4 @@ -/* $OpenBSD: inode.c,v 1.19 2002/02/16 21:27:34 millert Exp $ */ +/* $OpenBSD: inode.c,v 1.20 2002/05/22 08:21:02 deraadt Exp $ */ /* $NetBSD: inode.c,v 1.23 1996/10/11 20:15:47 thorpej Exp $ */ /* @@ -38,7 +38,7 @@ #if 0 static char sccsid[] = "@(#)inode.c 8.5 (Berkeley) 2/8/95"; #else -static char rcsid[] = "$OpenBSD: inode.c,v 1.19 2002/02/16 21:27:34 millert Exp $"; +static char rcsid[] = "$OpenBSD: inode.c,v 1.20 2002/05/22 08:21:02 deraadt Exp $"; #endif #endif /* not lint */ @@ -188,8 +188,9 @@ iblock(idesc, ilevel, isize) for (ap = &bp->b_un.b_indir[nif]; ap < aplim; ap++) { if (*ap == 0) continue; - (void)sprintf(buf, "PARTIALLY TRUNCATED INODE I=%u", - idesc->id_number); + (void)snprintf(buf, sizeof buf, + "PARTIALLY TRUNCATED INODE I=%u", + idesc->id_number); if (dofix(idesc, buf)) { *ap = 0; dirty(bp); diff --git a/sbin/ifconfig/ifconfig.c b/sbin/ifconfig/ifconfig.c index 1258db3e501..392fc178d57 100644 --- a/sbin/ifconfig/ifconfig.c +++ b/sbin/ifconfig/ifconfig.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ifconfig.c,v 1.63 2002/04/26 04:40:42 fgsch Exp $ */ +/* $OpenBSD: ifconfig.c,v 1.64 2002/05/22 08:21:02 deraadt Exp $ */ /* $NetBSD: ifconfig.c,v 1.40 1997/10/01 02:19:43 enami Exp $ */ /* @@ -81,7 +81,7 @@ static const char copyright[] = #if 0 static const char sccsid[] = "@(#)ifconfig.c 8.2 (Berkeley) 2/16/94"; #else -static const char rcsid[] = "$OpenBSD: ifconfig.c,v 1.63 2002/04/26 04:40:42 fgsch Exp $"; +static const char rcsid[] = "$OpenBSD: ifconfig.c,v 1.64 2002/05/22 08:21:02 deraadt Exp $"; #endif #endif /* not lint */ @@ -1855,8 +1855,8 @@ in6_alias(creq) in6_fillscopeid(sin6); scopeid = sin6->sin6_scope_id; if (getnameinfo((struct sockaddr *)sin6, sin6->sin6_len, - hbuf, sizeof(hbuf), NULL, 0, niflag) != 0) - strcpy(hbuf, ""); + hbuf, sizeof(hbuf), NULL, 0, niflag) != 0) + strlcpy(hbuf, "", sizeof hbuf); printf("\tinet6 %s", hbuf); if (flags & IFF_POINTOPOINT) { @@ -1873,8 +1873,8 @@ in6_alias(creq) sin6 = (struct sockaddr_in6 *)&ifr6.ifr_addr; in6_fillscopeid(sin6); if (getnameinfo((struct sockaddr *)sin6, sin6->sin6_len, - hbuf, sizeof(hbuf), NULL, 0, niflag) != 0) - strcpy(hbuf, ""); + hbuf, sizeof(hbuf), NULL, 0, niflag) != 0) + strlcpy(hbuf, "", sizeof hbuf); printf(" -> %s", hbuf); } diff --git a/sbin/init/init.c b/sbin/init/init.c index af77a83e972..264e5e07571 100644 --- a/sbin/init/init.c +++ b/sbin/init/init.c @@ -1,4 +1,4 @@ -/* $OpenBSD: init.c,v 1.25 2002/02/19 19:39:38 millert Exp $ */ +/* $OpenBSD: init.c,v 1.26 2002/05/22 08:21:02 deraadt Exp $ */ /* $NetBSD: init.c,v 1.22 1996/05/15 23:29:33 jtc Exp $ */ /*- @@ -47,7 +47,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)init.c 8.2 (Berkeley) 4/28/95"; #else -static char rcsid[] = "$OpenBSD: init.c,v 1.25 2002/02/19 19:39:38 millert Exp $"; +static char rcsid[] = "$OpenBSD: init.c,v 1.26 2002/05/22 08:21:02 deraadt Exp $"; #endif #endif /* not lint */ @@ -521,8 +521,8 @@ single_user() #endif /* Init shell and name */ - strcpy(shell, _PATH_BSHELL); - strcpy(name, "-sh"); + strlcpy(shell, _PATH_BSHELL, sizeof shell); + strlcpy(name, "-sh", sizeof name); /* * If the kernel is in secure mode, downgrade it to insecure mode. @@ -569,6 +569,7 @@ single_user() #define SHREQUEST \ "Enter pathname of shell or RETURN for sh: " + (void)write(STDERR_FILENO, SHREQUEST, sizeof(SHREQUEST) - 1); while ((num = read(STDIN_FILENO, cp, 1)) != -1 && @@ -581,7 +582,7 @@ single_user() char *p; /* Binary to exec */ - strcpy(shell, altshell); + strlcpy(shell, altshell, sizeof shell); /* argv[0] */ p = strrchr(altshell, '/'); @@ -589,7 +590,7 @@ single_user() else p++; name[0] = '-'; - strcpy(&name[1], p); + strlcpy(&name[1], p, sizeof name -1); } } #endif /* DEBUGSHELL */ diff --git a/sbin/kbd/kbd_wscons.c b/sbin/kbd/kbd_wscons.c index 974577b4faf..00f9ed9280c 100644 --- a/sbin/kbd/kbd_wscons.c +++ b/sbin/kbd/kbd_wscons.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kbd_wscons.c,v 1.6 2002/04/12 02:16:01 deraadt Exp $ */ +/* $OpenBSD: kbd_wscons.c,v 1.7 2002/05/22 08:21:02 deraadt Exp $ */ /* * Copyright (c) 2001 Mats O Jansson. All rights reserved. @@ -29,6 +29,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ +#include <sys/param.h> #include <sys/ioctl.h> #include <sys/time.h> #include <dev/wscons/wsconsio.h> @@ -50,7 +51,7 @@ #define SA_AKBD 2 #define SA_ZSKBD 3 #define SA_SUNKBD 4 - + struct nlist nl[] = { { "_pckbd_keydesctab" }, { "_ukbd_keydesctab" }, @@ -103,14 +104,14 @@ kbd_show_enc(kd, idx) printf("tables available for %s keyboard:\nencoding\n\n", kbtype_tab[idx]); p = nl[idx].n_value; - kvm_read(kd, p, &r, sizeof(r)); + kvm_read(kd, p, &r, sizeof(r)); while (r.name != 0) { n = &kbdenc_tab[0]; found = 0; - while(n->value) { + while (n->value) { if (n->value == KB_ENCODING(r.name)) { printf("%s",n->name); - found++; + found++; } n++; } @@ -121,7 +122,7 @@ kbd_show_enc(kd, idx) n = &kbdvar_tab[0]; found = 0; variant = KB_VARIANT(r.name); - while(n->value) { + while (n->value) { if ((n->value & KB_VARIANT(r.name)) == n->value) { printf(".%s",n->name); variant &= ~n->value; @@ -134,7 +135,7 @@ kbd_show_enc(kd, idx) } printf("\n"); p += sizeof(r); - kvm_read(kd, p, &r, sizeof(r)); + kvm_read(kd, p, &r, sizeof(r)); } printf("\n"); } @@ -145,7 +146,7 @@ kbd_list() { int fd, i, kbtype, ret; kvm_t *kd; - char device[sizeof "/dev/wskbd00"]; + char device[MAXPATHLEN]; char errbuf[_POSIX2_LINE_MAX]; int pc_kbd = 0; int usb_kbd = 0; @@ -155,7 +156,7 @@ kbd_list() /* Go through all keyboards. */ for (i = 0; i < NUM_KBD; i++) { - (void) sprintf(device, "/dev/wskbd%d", i); + (void) snprintf(device, sizeof device, "/dev/wskbd%d", i); fd = open(device, O_WRONLY); if (fd < 0) fd = open(device, O_RDONLY); @@ -164,7 +165,7 @@ kbd_list() err(1, "WDKBDIO_GTYPE"); if ((kbtype == WSKBD_TYPE_PC_XT) || (kbtype == WSKBD_TYPE_PC_AT)) - pc_kbd++; + pc_kbd++; if (kbtype == WSKBD_TYPE_USB) usb_kbd++; if (kbtype == WSKBD_TYPE_ADB) @@ -183,7 +184,7 @@ kbd_list() if ((ret = kvm_nlist(kd, nl)) == -1) errx(1, "kvm_nlist: %s", kvm_geterr(kd)); - + if (pc_kbd > 0) kbd_show_enc(kd, SA_PCKBD); @@ -200,7 +201,7 @@ kbd_list() kbd_show_enc(kd, SA_SUNKBD); kvm_close(kd); - + if (rebuild > 0) { printf("Unknown encoding or variant. kbd(1) needs to be rebuild.\n"); } @@ -222,12 +223,12 @@ kbd_set(name, verbose) c = name; b = buf; - while((*c != '.') && (*c != '\0')) { + while ((*c != '.') && (*c != '\0')) { *b++ = *c++; } *b = '\0'; n = &kbdenc_tab[0]; - while(n->value) { + while (n->value) { if (strcmp(n->name,buf) == 0) { map = n->value; } @@ -235,16 +236,16 @@ kbd_set(name, verbose) } if (map == 0) errx(1, "unknown encoding %s", buf); - while(*c == '.') { + while (*c == '.') { b = buf; c++; - while((*c != '.') && (*c != '\0')) { + while ((*c != '.') && (*c != '\0')) { *b++ = *c++; } *b = '\0'; v = 0; n = &kbdvar_tab[0]; - while(n->value) { + while (n->value) { if (strcmp(n->name,buf) == 0) { v = n->value; } @@ -258,15 +259,16 @@ kbd_set(name, verbose) /* Go through all keyboards. */ v = 0; for (i = 0; i < NUM_KBD; i++) { - (void) sprintf(device, "/dev/wskbd%d", i); + (void) snprintf(device, sizeof device, "/dev/wskbd%d", i); fd = open(device, O_WRONLY); if (fd < 0) fd = open(device, O_RDONLY); if (fd >= 0) { if (ioctl(fd, WSKBDIO_SETENCODING, &map) < 0) { if (errno == EINVAL) { - fprintf(stderr, "%s: unsupported encoding %s on %s\n", - __progname, name, device); + fprintf(stderr, + "%s: unsupported encoding %s on %s\n", + __progname, name, device); } else { err(1, "WDKBDIO_SETENCODING: %s", device); } diff --git a/sbin/mount_portal/mount_portal.c b/sbin/mount_portal/mount_portal.c index f996fe81cbb..ab7511eceef 100644 --- a/sbin/mount_portal/mount_portal.c +++ b/sbin/mount_portal/mount_portal.c @@ -1,4 +1,4 @@ -/* $OpenBSD: mount_portal.c,v 1.18 2002/02/16 21:27:36 millert Exp $ */ +/* $OpenBSD: mount_portal.c,v 1.19 2002/05/22 08:21:02 deraadt Exp $ */ /* $NetBSD: mount_portal.c,v 1.8 1996/04/13 01:31:54 jtc Exp $ */ /* @@ -47,7 +47,7 @@ char copyright[] = #if 0 static char sccsid[] = "@(#)mount_portal.c 8.6 (Berkeley) 4/26/95"; #else -static char rcsid[] = "$OpenBSD: mount_portal.c,v 1.18 2002/02/16 21:27:36 millert Exp $"; +static char rcsid[] = "$OpenBSD: mount_portal.c,v 1.19 2002/05/22 08:21:02 deraadt Exp $"; #endif #endif /* not lint */ @@ -169,7 +169,7 @@ main(argc, argv) un.sun_family = AF_UNIX; if (sizeof(_PATH_TMPPORTAL) >= sizeof(un.sun_path)) errx(1, "portal socket name too long"); - (void)strcpy(un.sun_path, _PATH_TMPPORTAL); + (void)strlcpy(un.sun_path, _PATH_TMPPORTAL, sizeof un.sun_path); so = mkstemp(un.sun_path); if (so < 0) err(1, "can't create portal socket name: %s", un.sun_path); diff --git a/sbin/ncheck_ffs/ncheck_ffs.c b/sbin/ncheck_ffs/ncheck_ffs.c index 9ec14c08258..a6a236b4a74 100644 --- a/sbin/ncheck_ffs/ncheck_ffs.c +++ b/sbin/ncheck_ffs/ncheck_ffs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ncheck_ffs.c,v 1.10 2002/03/14 06:51:41 mpech Exp $ */ +/* $OpenBSD: ncheck_ffs.c,v 1.11 2002/05/22 08:21:02 deraadt Exp $ */ /*- * Copyright (c) 1995, 1996 SigmaSoft, Th. Lockert <tholo@sigmasoft.com> @@ -31,7 +31,7 @@ */ #ifndef lint -static char rcsid[] = "$OpenBSD: ncheck_ffs.c,v 1.10 2002/03/14 06:51:41 mpech Exp $"; +static char rcsid[] = "$OpenBSD: ncheck_ffs.c,v 1.11 2002/05/22 08:21:02 deraadt Exp $"; #endif /* not lint */ #include <sys/param.h> @@ -394,15 +394,16 @@ searchdir(ino, blkno, size, filesize, path) path, dp->d_name, mode == IFDIR ? "/." : ""); } if (mode == IFDIR) { + int len; + if (dp->d_name[0] == '.') { if (dp->d_name[1] == '\0' || (dp->d_name[1] == '.' && dp->d_name[2] == '\0')) continue; } - npath = malloc(strlen(path) + strlen(dp->d_name) + 2); - strcpy(npath, path); - strcat(npath, "/"); - strcat(npath, dp->d_name); + len = strlen(path) + strlen(dp->d_name) + 2; + npath = malloc(len); + snprintf(npath, len, "%s/%s", path, dp->d_name); scanonedir(dp->d_ino, npath); free(npath); } diff --git a/sbin/newlfs/newfs.c b/sbin/newlfs/newfs.c index de530d4448e..eb4c29f0a71 100644 --- a/sbin/newlfs/newfs.c +++ b/sbin/newlfs/newfs.c @@ -1,4 +1,4 @@ -/* $OpenBSD: newfs.c,v 1.10 2002/03/14 16:44:24 mpech Exp $ */ +/* $OpenBSD: newfs.c,v 1.11 2002/05/22 08:21:02 deraadt Exp $ */ /* $NetBSD: newfs.c,v 1.5 1996/05/16 07:17:50 thorpej Exp $ */ /*- @@ -44,7 +44,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)newfs.c 8.5 (Berkeley) 5/24/95"; #else -static char rcsid[] = "$OpenBSD: newfs.c,v 1.10 2002/03/14 16:44:24 mpech Exp $"; +static char rcsid[] = "$OpenBSD: newfs.c,v 1.11 2002/05/22 08:21:02 deraadt Exp $"; #endif #endif /* not lint */ @@ -410,7 +410,7 @@ rewritelabel(s, fd, lp) /* * Make name for 'c' partition. */ - strcpy(specname, s); + strlcpy(specname, s, sizeof specname); cp = specname + strlen(specname) - 1; if (!isdigit(*cp)) *cp = 'c'; diff --git a/sbin/nfsd/nfsd.c b/sbin/nfsd/nfsd.c index db151202a95..6fba9ea91ef 100644 --- a/sbin/nfsd/nfsd.c +++ b/sbin/nfsd/nfsd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: nfsd.c,v 1.16 2002/02/16 21:27:37 millert Exp $ */ +/* $OpenBSD: nfsd.c,v 1.17 2002/05/22 08:21:02 deraadt Exp $ */ /* $NetBSD: nfsd.c,v 1.19 1996/02/18 23:18:56 mycroft Exp $ */ /* @@ -290,7 +290,7 @@ main(argc, argv, envp) (RPCAUTH_MAXSIZ - 3 * NFSX_UNSIGNED)) { kin.w1 = NFS_KERBW1(kt); kt.mbz = 0; - (void)strcpy(inst, "*"); + (void)strlcpy(inst, "*", sizeof inst); if (krb_rd_req(&kt, NFS_KERBSRV, inst, nsd.nsd_haddr, &kauth, "") == RD_AP_OK && krb_kntoln(&kauth, lnam) == KSUCCESS && diff --git a/sbin/savecore/savecore.c b/sbin/savecore/savecore.c index b6014ab69d6..95d21d0fe66 100644 --- a/sbin/savecore/savecore.c +++ b/sbin/savecore/savecore.c @@ -1,4 +1,4 @@ -/* $OpenBSD: savecore.c,v 1.28 2002/02/16 21:27:37 millert Exp $ */ +/* $OpenBSD: savecore.c,v 1.29 2002/05/22 08:21:02 deraadt Exp $ */ /* $NetBSD: savecore.c,v 1.26 1996/03/18 21:16:05 leo Exp $ */ /*- @@ -44,7 +44,7 @@ static char copyright[] = #if 0 static char sccsid[] = "@(#)savecore.c 8.3 (Berkeley) 1/2/94"; #else -static char rcsid[] = "$OpenBSD: savecore.c,v 1.28 2002/02/16 21:27:37 millert Exp $"; +static char rcsid[] = "$OpenBSD: savecore.c,v 1.29 2002/05/22 08:21:02 deraadt Exp $"; #endif #endif /* not lint */ @@ -532,15 +532,16 @@ find_dev(dev, type) DIR *dfd; struct dirent *dir; struct stat sb; - char *dp, devname[MAXPATHLEN + 1]; + char *dp, devname[MAXPATHLEN]; if ((dfd = opendir(_PATH_DEV)) == NULL) { syslog(LOG_ERR, "%s: %s", _PATH_DEV, strerror(errno)); exit(1); } - (void)strcpy(devname, _PATH_DEV); + (void)strlcpy(devname, _PATH_DEV, sizeof devname); while ((dir = readdir(dfd))) { - (void)strcpy(devname + sizeof(_PATH_DEV) - 1, dir->d_name); + (void)strlcpy(devname + sizeof(_PATH_DEV) - 1, dir->d_name, + sizeof devname + sizeof(_PATH_DEV) - 1); if (lstat(devname, &sb)) { syslog(LOG_ERR, "%s: %s", devname, strerror(errno)); continue; |