summaryrefslogtreecommitdiffstats
path: root/sail
diff options
context:
space:
mode:
authordholland <dholland@NetBSD.org>2009-03-14 18:32:47 +0000
committerdholland <dholland@NetBSD.org>2009-03-14 18:32:47 +0000
commit46cbf84f76cfe8fb29ae3f5a16b5302a687c9691 (patch)
tree1953b1d7a506556d3ce5202928b342822c89d9e4 /sail
parent8e56f6b8823a74c576682b4191df9d6182d0001d (diff)
downloadbsdgames-darwin-46cbf84f76cfe8fb29ae3f5a16b5302a687c9691.tar.gz
bsdgames-darwin-46cbf84f76cfe8fb29ae3f5a16b5302a687c9691.tar.zst
bsdgames-darwin-46cbf84f76cfe8fb29ae3f5a16b5302a687c9691.zip
String buffer cleanup. sprintf bad.
Diffstat (limited to 'sail')
-rw-r--r--sail/dr_2.c44
-rw-r--r--sail/dr_3.c5
-rw-r--r--sail/extern.h4
-rw-r--r--sail/lo_main.c10
-rw-r--r--sail/pl_5.c8
-rw-r--r--sail/pl_main.c7
-rw-r--r--sail/sync.c23
7 files changed, 53 insertions, 48 deletions
diff --git a/sail/dr_2.c b/sail/dr_2.c
index e082a72b..bbf145c0 100644
--- a/sail/dr_2.c
+++ b/sail/dr_2.c
@@ -1,4 +1,4 @@
-/* $NetBSD: dr_2.c,v 1.21 2009/03/14 17:10:01 dholland Exp $ */
+/* $NetBSD: dr_2.c,v 1.22 2009/03/14 18:32:47 dholland Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)dr_2.c 8.1 (Berkeley) 5/31/93";
#else
-__RCSID("$NetBSD: dr_2.c,v 1.21 2009/03/14 17:10:01 dholland Exp $");
+__RCSID("$NetBSD: dr_2.c,v 1.22 2009/03/14 18:32:47 dholland Exp $");
#endif
#endif /* not lint */
@@ -48,9 +48,9 @@ __RCSID("$NetBSD: dr_2.c,v 1.21 2009/03/14 17:10:01 dholland Exp $");
#define couldwin(f,t) (f->specs->crew2 > t->specs->crew2 * 1.5)
static int str_end(const char *);
-static int score(struct ship *, struct ship *, char *, int);
+static int score(struct ship *, struct ship *, char *, size_t, int);
static void move_ship(struct ship *, const char *, unsigned char *, short *, short *, int *);
-static void try(struct ship *, struct ship *, char *, char *, int, int, int, int, int, int *, int);
+static void try(struct ship *f, struct ship *t, char *command, size_t commandmax, char *temp, size_t tempmax, int ma, int ta, int af, int vma, int dir, int *high, int rakeme);
static void rmend(char *);
const int dtab[] = {0,1,1,2,3,4,4,5}; /* diagonal distances in x==y */
@@ -146,18 +146,18 @@ str_end(const char *str)
}
void
-closeon(struct ship *from, struct ship *to, char *command, int ta, int ma, int af)
+closeon(struct ship *from, struct ship *to, char *command, size_t commandmax, int ta, int ma, int af)
{
int high;
char temp[10];
temp[0] = command[0] = '\0';
high = -30000;
- try(from, to, command, temp, ma, ta, af, ma, from->file->dir, &high, 0);
+ try(from, to, command, commandmax, temp, sizeof(temp), ma, ta, af, ma, from->file->dir, &high, 0);
}
static int
-score(struct ship *ship, struct ship *to, char *movement, int onlytemp)
+score(struct ship *ship, struct ship *to, char *movement, size_t movementmax, int onlytemp)
{
int drift;
int row, col, dir, total, ran;
@@ -170,7 +170,7 @@ score(struct ship *ship, struct ship *to, char *movement, int onlytemp)
drift = fp->drift;
move_ship(ship, movement, &fp->dir, &fp->row, &fp->col, &drift);
if (!*movement)
- strcpy(movement, "d");
+ strlcpy(movement, "d", movementmax);
ran = range(ship, to);
total = -50 * ran;
@@ -228,7 +228,7 @@ move_ship(struct ship *ship, const char *p, unsigned char *dir, short *row, shor
}
static void
-try(struct ship *f, struct ship *t, char *command, char *temp, int ma, int ta, int af, int vma, int dir, int *high, int rakeme)
+try(struct ship *f, struct ship *t, char *command, size_t commandmax, char *temp, size_t tempmax, int ma, int ta, int af, int vma, int dir, int *high, int rakeme)
{
int new, n;
char st[4];
@@ -236,35 +236,35 @@ try(struct ship *f, struct ship *t, char *command, char *temp, int ma, int ta, i
if ((n = str_end(temp)) < '1' || n > '9')
for (n = 1; vma - n >= 0; n++) {
- sprintf(st, "%d", n);
- strcat(temp, st);
- new = score(f, t, temp, rakeme);
+ snprintf(st, sizeof(st), "%d", n);
+ strlcat(temp, st, tempmax);
+ new = score(f, t, temp, tempmax, rakeme);
if (new > *high && (!rakeme || rakeyou)) {
*high = new;
- strcpy(command, temp);
+ strlcpy(command, temp, commandmax);
}
- try(f, t, command, temp, ma-n, ta, af, vma-n,
+ try(f, t, command, commandmax, temp, tempmax, ma-n, ta, af, vma-n,
dir, high, rakeme);
rmend(temp);
}
if ((ma > 0 && ta > 0 && (n = str_end(temp)) != 'l' && n != 'r') || !strlen(temp)) {
- strcat(temp, "r");
- new = score(f, t, temp, rakeme);
+ strlcat(temp, "r", tempmax);
+ new = score(f, t, temp, tempmax, rakeme);
if (new > *high && (!rakeme || (gunsbear(f, t) && !gunsbear(t, f)))) {
*high = new;
- strcpy(command, temp);
+ strlcpy(command, temp, commandmax);
}
- try(f, t, command, temp, ma-1, ta-1, af, min(ma-1, maxmove(f, (dir == 8 ? 1 : dir+1), 0)), (dir == 8 ? 1 : dir+1), high, rakeme);
+ try(f, t, command, commandmax, temp, tempmax, ma-1, ta-1, af, min(ma-1, maxmove(f, (dir == 8 ? 1 : dir+1), 0)), (dir == 8 ? 1 : dir+1), high, rakeme);
rmend(temp);
}
if ((ma > 0 && ta > 0 && (n = str_end(temp)) != 'l' && n != 'r') || !strlen(temp)){
- strcat(temp, "l");
- new = score(f, t, temp, rakeme);
+ strlcat(temp, "l", sizeof(temp));
+ new = score(f, t, temp, tempmax, rakeme);
if (new > *high && (!rakeme || (gunsbear(f, t) && !gunsbear(t, f)))){
*high = new;
- strcpy(command, temp);
+ strlcpy(command, temp, commandmax);
}
- try(f, t, command, temp, ma-1, ta-1, af, (min(ma-1,maxmove(f, (dir-1 ? dir-1 : 8), 0))), (dir-1 ? dir -1 : 8), high, rakeme);
+ try(f, t, command, commandmax, temp, tempmax, ma-1, ta-1, af, (min(ma-1,maxmove(f, (dir-1 ? dir-1 : 8), 0))), (dir-1 ? dir -1 : 8), high, rakeme);
rmend(temp);
}
}
diff --git a/sail/dr_3.c b/sail/dr_3.c
index 147c8fb1..06d335ae 100644
--- a/sail/dr_3.c
+++ b/sail/dr_3.c
@@ -1,4 +1,4 @@
-/* $NetBSD: dr_3.c,v 1.15 2003/08/07 09:37:42 agc Exp $ */
+/* $NetBSD: dr_3.c,v 1.16 2009/03/14 18:32:47 dholland Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)dr_3.c 8.1 (Berkeley) 5/31/93";
#else
-__RCSID("$NetBSD: dr_3.c,v 1.15 2003/08/07 09:37:42 agc Exp $");
+__RCSID("$NetBSD: dr_3.c,v 1.16 2009/03/14 18:32:47 dholland Exp $");
#endif
#endif /* not lint */
@@ -77,6 +77,7 @@ moveall(void)
*sp->file->movebuf = '\0';
else
closeon(sp, closest, sp->file->movebuf,
+ sizeof(sp->file->movebuf),
ta, ma, af);
} else
*sp->file->movebuf = '\0';
diff --git a/sail/extern.h b/sail/extern.h
index 164e852e..a5a1ec2d 100644
--- a/sail/extern.h
+++ b/sail/extern.h
@@ -1,4 +1,4 @@
-/* $NetBSD: extern.h,v 1.28 2006/03/18 01:43:52 abs Exp $ */
+/* $NetBSD: extern.h,v 1.29 2009/03/14 18:32:47 dholland Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -304,7 +304,7 @@ int next (void);
void thinkofgrapples (void);
void checkup (void);
void prizecheck (void);
-void closeon (struct ship *, struct ship *, char *, int, int, int);
+void closeon (struct ship *, struct ship *, char *, size_t, int, int, int);
/* dr_3.c */
void moveall (void);
diff --git a/sail/lo_main.c b/sail/lo_main.c
index 206f0b6d..7a3df13a 100644
--- a/sail/lo_main.c
+++ b/sail/lo_main.c
@@ -1,4 +1,4 @@
-/* $NetBSD: lo_main.c,v 1.13 2008/01/28 01:58:01 dholland Exp $ */
+/* $NetBSD: lo_main.c,v 1.14 2009/03/14 18:32:47 dholland Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)lo_main.c 8.2 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: lo_main.c,v 1.13 2008/01/28 01:58:01 dholland Exp $");
+__RCSID("$NetBSD: lo_main.c,v 1.14 2009/03/14 18:32:47 dholland Exp $");
#endif
#endif /* not lint */
@@ -83,9 +83,11 @@ lo_main(void)
while (fread((char *)&log, sizeof log, 1, fp) == 1 &&
log.l_name[0] != '\0') {
if (longfmt && (pass = getpwuid(log.l_uid)) != NULL)
- sprintf(sbuf, "%10.10s (%s)", log.l_name, pass->pw_name);
+ snprintf(sbuf, sizeof(sbuf),
+ "%10.10s (%s)", log.l_name, pass->pw_name);
else
- sprintf(sbuf, "%20.20s", log.l_name);
+ snprintf(sbuf, sizeof(sbuf),
+ "%20.20s", log.l_name);
ship = &scene[log.l_gamenum].ship[log.l_shipnum];
printf("%-10s %21s of the %15s %3d points, %5.2f equiv\n",
title[n++], sbuf, ship->shipname, log.l_netpoints,
diff --git a/sail/pl_5.c b/sail/pl_5.c
index 9f22f92b..eef6084f 100644
--- a/sail/pl_5.c
+++ b/sail/pl_5.c
@@ -1,4 +1,4 @@
-/* $NetBSD: pl_5.c,v 1.19 2008/01/28 01:58:01 dholland Exp $ */
+/* $NetBSD: pl_5.c,v 1.20 2009/03/14 18:32:47 dholland Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)pl_5.c 8.1 (Berkeley) 5/31/93";
#else
-__RCSID("$NetBSD: pl_5.c,v 1.19 2008/01/28 01:58:01 dholland Exp $");
+__RCSID("$NetBSD: pl_5.c,v 1.20 2009/03/14 18:32:47 dholland Exp $");
#endif
#endif /* not lint */
@@ -146,9 +146,9 @@ acceptmove(void)
}
}
if (*buf)
- strcpy(movebuf, buf);
+ strlcpy(movebuf, buf, sizeof(movebuf));
else
- strcpy(movebuf, "d");
+ strlcpy(movebuf, "d", sizeof(movebuf));
Writestr(W_MOVE, ms, movebuf);
Msg("Helm: %s.", movebuf);
}
diff --git a/sail/pl_main.c b/sail/pl_main.c
index fe407cae..6d068010 100644
--- a/sail/pl_main.c
+++ b/sail/pl_main.c
@@ -1,4 +1,4 @@
-/* $NetBSD: pl_main.c,v 1.19 2009/03/02 07:33:30 dholland Exp $ */
+/* $NetBSD: pl_main.c,v 1.20 2009/03/14 18:32:47 dholland Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)pl_main.c 8.1 (Berkeley) 5/31/93";
#else
-__RCSID("$NetBSD: pl_main.c,v 1.19 2009/03/02 07:33:30 dholland Exp $");
+__RCSID("$NetBSD: pl_main.c,v 1.20 2009/03/14 18:32:47 dholland Exp $");
#endif
#endif /* not lint */
@@ -203,7 +203,7 @@ reprint:
ms->shipname, mc->guns, classname[mc->class],
qualname[mc->qual]);
if ((nameptr = (char *) getenv("SAILNAME")) && *nameptr)
- strncpy(captain, nameptr, sizeof captain);
+ strlcpy(captain, nameptr, sizeof captain);
else {
printf("Your name, Captain? ");
fflush(stdout);
@@ -214,7 +214,6 @@ reprint:
else
captain[strlen(captain) - 1] = '\0';
}
- captain[sizeof captain - 1] = '\0';
Writestr(W_CAPTAIN, ms, captain);
for (n = 0; n < 2; n++) {
char buf[10];
diff --git a/sail/sync.c b/sail/sync.c
index 20ddfe9e..b813a7c6 100644
--- a/sail/sync.c
+++ b/sail/sync.c
@@ -1,4 +1,4 @@
-/* $NetBSD: sync.c,v 1.25 2008/01/28 01:58:01 dholland Exp $ */
+/* $NetBSD: sync.c,v 1.26 2009/03/14 18:32:47 dholland Exp $ */
/*
* Copyright (c) 1983, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)sync.c 8.2 (Berkeley) 4/28/95";
#else
-__RCSID("$NetBSD: sync.c,v 1.25 2008/01/28 01:58:01 dholland Exp $");
+__RCSID("$NetBSD: sync.c,v 1.26 2009/03/14 18:32:47 dholland Exp $");
#endif
#endif /* not lint */
@@ -99,7 +99,7 @@ makesignal(struct ship *from, const char *fmt, struct ship *ship, ...)
va_start(ap, ship);
fmtship(format, sizeof(format), fmt, ship);
- vsprintf(message, format, ap);
+ vsnprintf(message, sizeof(message), format, ap);
va_end(ap);
Writestr(W_SIGNAL, from, message);
}
@@ -112,7 +112,7 @@ makemsg(struct ship *from, const char *fmt, ...)
va_list ap;
va_start(ap, fmt);
- vsprintf(message, fmt, ap);
+ vsnprintf(message, sizeof(message), fmt, ap);
va_end(ap);
Writestr(W_SIGNAL, from, message);
}
@@ -124,7 +124,7 @@ sync_exists(int gamenum)
struct stat s;
time_t t;
- sprintf(buf, SF, gamenum);
+ snprintf(buf, sizeof(buf), SF, gamenum);
time(&t);
setegid(egid);
if (stat(buf, &s) < 0) {
@@ -133,7 +133,7 @@ sync_exists(int gamenum)
}
if (s.st_mtime < t - 60*60*2) { /* 2 hours */
unlink(buf);
- sprintf(buf, LF, gamenum);
+ snprintf(buf, sizeof(buf), LF, gamenum);
unlink(buf);
setegid(gid);
return 0;
@@ -149,8 +149,8 @@ sync_open(void)
struct stat tmp;
if (sync_fp != NULL)
fclose(sync_fp);
- sprintf(sync_lock, LF, game);
- sprintf(sync_file, SF, game);
+ snprintf(sync_lock, sizeof(sync_lock), LF, game);
+ snprintf(sync_file, sizeof(sync_file), SF, game);
setegid(egid);
if (stat(sync_file, &tmp) < 0) {
mode_t omask = umask(002);
@@ -180,8 +180,9 @@ sync_close(int doremove)
void
Write(int type, struct ship *ship, long a, long b, long c, long d)
{
+ size_t max = sizeof(sync_buf) - (sync_bp - sync_buf);
- sprintf(sync_bp, "%d %d 0 %ld %ld %ld %ld\n",
+ snprintf(sync_bp, max, "%d %d 0 %ld %ld %ld %ld\n",
type, ship->file->index, a, b, c, d);
while (*sync_bp++)
;
@@ -194,7 +195,9 @@ Write(int type, struct ship *ship, long a, long b, long c, long d)
void
Writestr(int type, struct ship *ship, const char *a)
{
- sprintf(sync_bp, "%d %d 1 %s\n", type, ship->file->index, a);
+ size_t max = sizeof(sync_buf) - (sync_bp - sync_buf);
+
+ snprintf(sync_bp, max, "%d %d 1 %s\n", type, ship->file->index, a);
while (*sync_bp++)
;
sync_bp--;