add sanity checks when saving/restoring games (PR#6138 by Joseph Myers <jsm28@cam.ac.uk>)

This commit is contained in:
hubertf 1998-09-13 15:24:41 +00:00
parent 3d10f9ca2b
commit ade2d3629c
1 changed files with 10 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: save.c,v 1.7 1997/10/12 02:06:15 lukem Exp $ */
/* $NetBSD: save.c,v 1.8 1998/09/13 15:24:41 hubertf Exp $ */
/*
* Copyright (c) 1983, 1993
@ -38,7 +38,7 @@
#if 0
static char sccsid[] = "@(#)save.c 8.2 (Berkeley) 4/28/95";
#else
__RCSID("$NetBSD: save.c,v 1.7 1997/10/12 02:06:15 lukem Exp $");
__RCSID("$NetBSD: save.c,v 1.8 1998/09/13 15:24:41 hubertf Exp $");
#endif
#endif /* not lint */
@ -57,7 +57,7 @@ restore()
strcpy(home1, home);
strcat(home1, "/Bstar");
if ((fp = fopen(home1, "r")) == 0) {
warn("fopen %s", home1);
err(1, "fopen %s", home1);
return;
}
fread(&WEIGHT, sizeof WEIGHT, 1, fp);
@ -94,7 +94,9 @@ restore()
fread(&loved, sizeof loved, 1, fp);
fread(&pleasure, sizeof pleasure, 1, fp);
fread(&power, sizeof power, 1, fp);
fread(&ego, sizeof ego, 1, fp);
if (fread(&ego, sizeof ego, 1, fp) < 1)
errx(1, "save file %s too short", home1);
fclose(fp);
}
void
@ -149,4 +151,8 @@ save()
fwrite(&pleasure, sizeof pleasure, 1, fp);
fwrite(&power, sizeof power, 1, fp);
fwrite(&ego, sizeof ego, 1, fp);
fflush(fp);
if (ferror(fp))
warn("fwrite %s", home1);
fclose(fp);
}