From 56bf28d72a3cda58fbce373a975dc6668e187f86 Mon Sep 17 00:00:00 2001
From: Markus Uhlin <markus@nifty-networks.net>
Date: Mon, 2 Dec 2024 14:27:52 +0100
Subject: ReadV1PlayerFmt: handle fgets() nullret

---
 FICS/playerdb.c | 24 +++++++++++++++++++-----
 1 file changed, 19 insertions(+), 5 deletions(-)

(limited to 'FICS')

diff --git a/FICS/playerdb.c b/FICS/playerdb.c
index 93c81e8..e1da179 100644
--- a/FICS/playerdb.c
+++ b/FICS/playerdb.c
@@ -539,7 +539,10 @@ ReadV1PlayerFmt(int p, player *pp, FILE *fp, char *file, int version)
 
 	if (pp->num_plan > 0) {
 		for (i = 0; i < pp->num_plan; i++) {
-			fgets(tmp2, sizeof tmp2, fp);
+			if (fgets(tmp2, sizeof tmp2, fp) == NULL) {
+				warnx("%s: bad plan: feof %s", __func__, file);
+				return;
+			}
 
 			if (!(len = strlen(tmp2))) {
 				fprintf(stderr, "FICS: Error bad plan in "
@@ -557,7 +560,11 @@ ReadV1PlayerFmt(int p, player *pp, FILE *fp, char *file, int version)
 
 	if (pp->num_formula > 0) {
 		for (i = 0; i < pp->num_formula; i++) {
-			fgets(tmp2, sizeof tmp2, fp);
+			if (fgets(tmp2, sizeof tmp2, fp) == NULL) {
+				warnx("%s: bad formula: feof %s", __func__,
+				    file);
+				return;
+			}
 
 			if (!(len = strlen(tmp2))) {
 				fprintf(stderr, "FICS: Error bad formula in "
@@ -573,8 +580,12 @@ ReadV1PlayerFmt(int p, player *pp, FILE *fp, char *file, int version)
 		}
 	}
 
-	fgets(tmp2, sizeof tmp2, fp);
-	tmp2[strlen(tmp2) - 1] = '\0';
+	if (fgets(tmp2, sizeof tmp2, fp) == NULL) {
+		warnx("%s: fgets() error", __func__);
+		return;
+	}
+
+	tmp2[strcspn(tmp2, "\n")] = '\0';
 
 	if (!strcmp(tmp2, "NONE"))
 		pp->formula = NULL;
@@ -583,7 +594,10 @@ ReadV1PlayerFmt(int p, player *pp, FILE *fp, char *file, int version)
 
 	if (pp->numAlias > 0) {
 		for (i = 0; i < pp->numAlias; i++) {
-			fgets(tmp2, sizeof tmp2, fp);
+			if (fgets(tmp2, sizeof tmp2, fp) == NULL) {
+				warnx("%s: bad alias: feof %s", __func__, file);
+				return;
+			}
 
 			if (!(len = strlen(tmp2))) {
 				fprintf(stderr, "FICS: Error bad alias in "
-- 
cgit v1.2.3