does noone know how to use strncat correctly?
authorderaadt <deraadt@openbsd.org>
Mon, 16 Dec 1996 17:11:32 +0000 (17:11 +0000)
committerderaadt <deraadt@openbsd.org>
Mon, 16 Dec 1996 17:11:32 +0000 (17:11 +0000)
sbin/dump/main.c
sbin/mount_ados/mount_ados.c
sbin/mount_msdos/mount_msdos.c
sbin/restore/dirs.c
sbin/restore/interactive.c

index 2bc57cd..7975d55 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: main.c,v 1.10 1996/09/14 19:28:58 deraadt Exp $       */
+/*     $OpenBSD: main.c,v 1.11 1996/12/16 17:11:32 deraadt Exp $       */
 /*     $NetBSD: main.c,v 1.8 1996/03/15 22:39:32 scottr Exp $  */
 
 /*-
@@ -511,10 +511,11 @@ rawname(cp)
        if (dp == NULL)
                return (NULL);
        *dp = '\0';
-       (void)strncpy(rawbuf, cp, MAXPATHLEN);
+       (void)strncpy(rawbuf, cp, MAXPATHLEN-1);
+       rawbuf[MAXPATHLEN-1] = '\0';
        *dp = '/';
-       (void)strncat(rawbuf, "/r", MAXPATHLEN - 1 - strlen(rawbuf));
-       (void)strncat(rawbuf, dp + 1, MAXPATHLEN - 1 - strlen(rawbuf));
+       (void)strncat(rawbuf, "/r", MAXPATHLEN - strlen(rawbuf));
+       (void)strncat(rawbuf, dp + 1, MAXPATHLEN - strlen(rawbuf));
        return (rawbuf);
 }
 
index f68882f..52105cb 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mount_ados.c,v 1.3 1996/06/23 14:31:14 deraadt Exp $  */
+/*     $OpenBSD: mount_ados.c,v 1.4 1996/12/16 17:11:36 deraadt Exp $  */
 /*     $NetBSD: mount_ados.c,v 1.5 1996/04/13 01:30:59 jtc Exp $       */
 
 /*
@@ -32,7 +32,7 @@
  */
 
 #ifndef lint
-static char rcsid[] = "$OpenBSD: mount_ados.c,v 1.3 1996/06/23 14:31:14 deraadt Exp $";
+static char rcsid[] = "$OpenBSD: mount_ados.c,v 1.4 1996/12/16 17:11:36 deraadt Exp $";
 #endif /* not lint */
 
 #include <sys/cdefs.h>
@@ -106,8 +106,8 @@ main(argc, argv)
                warnx("\"%s\" is a relative path.", dir);
                if (getcwd(ndir, sizeof(ndir)) == NULL)
                        err(1, "getcwd");
-               strncat(ndir, "/", sizeof(ndir) - strlen(ndir) - 1);
-               strncat(ndir, dir, sizeof(ndir) - strlen(ndir) - 1);
+               strncat(ndir, "/", sizeof(ndir) - strlen(ndir));
+               strncat(ndir, dir, sizeof(ndir) - strlen(ndir));
                dir = ndir;
                warnx("using \"%s\" instead.", dir);
        }
index fb13e8f..a223f22 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: mount_msdos.c,v 1.7 1996/12/09 13:40:55 deraadt Exp $ */
+/*     $OpenBSD: mount_msdos.c,v 1.8 1996/12/16 17:11:38 deraadt Exp $ */
 /*     $NetBSD: mount_msdos.c,v 1.16 1996/10/24 00:12:50 cgd Exp $     */
 
 /*
@@ -32,7 +32,7 @@
  */
 
 #ifndef lint
-static char rcsid[] = "$OpenBSD: mount_msdos.c,v 1.7 1996/12/09 13:40:55 deraadt Exp $";
+static char rcsid[] = "$OpenBSD: mount_msdos.c,v 1.8 1996/12/16 17:11:38 deraadt Exp $";
 #endif /* not lint */
 
 #include <sys/cdefs.h>
@@ -121,8 +121,8 @@ main(argc, argv)
                warnx("\"%s\" is a relative path.", dir);
                if (getcwd(ndir, sizeof(ndir)) == NULL)
                        err(1, "getcwd");
-               strncat(ndir, "/", sizeof(ndir) - strlen(ndir) - 1);
-               strncat(ndir, dir, sizeof(ndir) - strlen(ndir) - 1);
+               strncat(ndir, "/", sizeof(ndir) - strlen(ndir));
+               strncat(ndir, dir, sizeof(ndir) - strlen(ndir));
                dir = ndir;
                warnx("using \"%s\" instead.", dir);
        }
index 10b593b..be09ef7 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: dirs.c,v 1.10 1996/12/15 18:49:24 millert Exp $       */
+/*     $OpenBSD: dirs.c,v 1.11 1996/12/16 17:11:41 deraadt Exp $       */
 /*     $NetBSD: dirs.c,v 1.16 1995/06/19 00:20:11 cgd Exp $    */
 
 /*
@@ -43,7 +43,7 @@
 #if 0
 static char sccsid[] = "@(#)dirs.c     8.5 (Berkeley) 8/31/94";
 #else
-static char rcsid[] = "$OpenBSD: dirs.c,v 1.10 1996/12/15 18:49:24 millert Exp $";
+static char rcsid[] = "$OpenBSD: dirs.c,v 1.11 1996/12/16 17:11:41 deraadt Exp $";
 #endif
 #endif /* not lint */
 
@@ -272,7 +272,7 @@ treescan(pname, ino, todo)
         */
        (void) strncpy(locname, pname, sizeof(locname) - 1);
        locname[sizeof(locname) - 1] = '\0';
-       (void) strncat(locname, "/", sizeof(locname) - strlen(locname) - 1);
+       (void) strncat(locname, "/", sizeof(locname) - strlen(locname));
        namelen = strlen(locname);
        rst_seekdir(dirp, itp->t_seekpt, itp->t_seekpt);
        dp = rst_readdir(dirp); /* "." */
index 12888f7..69b6657 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: interactive.c,v 1.2 1996/06/23 14:32:15 deraadt Exp $ */
+/*     $OpenBSD: interactive.c,v 1.3 1996/12/16 17:11:43 deraadt Exp $ */
 /*     $NetBSD: interactive.c,v 1.9 1995/03/18 14:59:44 cgd Exp $      */
 
 /*
@@ -38,7 +38,7 @@
 #if 0
 static char sccsid[] = "@(#)interactive.c      8.3 (Berkeley) 9/13/94";
 #else
-static char rcsid[] = "$OpenBSD: interactive.c,v 1.2 1996/06/23 14:32:15 deraadt Exp $";
+static char rcsid[] = "$OpenBSD: interactive.c,v 1.3 1996/12/16 17:11:43 deraadt Exp $";
 #endif
 #endif /* not lint */
 
@@ -536,7 +536,8 @@ printlist(name, basename)
                entries = 0;
                listp = list;
                (void) strncpy(locname, name, MAXPATHLEN);
-               (void) strncat(locname, "/", MAXPATHLEN);
+               locname[sizeof locname - 1] = '\0';
+               (void) strncat(locname, "/", MAXPATHLEN - strlen(locname));
                namelen = strlen(locname);
                while (dp = rst_readdir(dirp)) {
                        if (dp == NULL)