From 6b2114b5ce68659ad3bd51369d0d6da044ffade1 Mon Sep 17 00:00:00 2001 From: hubertf Date: Sun, 13 Sep 1998 15:24:41 +0000 Subject: add sanity checks when saving/restoring games (PR#6138 by Joseph Myers ) --- battlestar/save.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/battlestar/save.c b/battlestar/save.c index 6af3c2ee..fa24f407 100644 --- a/battlestar/save.c +++ b/battlestar/save.c @@ -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); } -- cgit v1.2.3