From 4ec98f79a82f9bf209bf4ae9a59ac8d3da16536d Mon Sep 17 00:00:00 2001 From: "Reece H. Dunn" Date: Thu, 21 Jan 2016 20:05:47 +0000 Subject: [PATCH] Fix truncated fgetc return value in LoadWavefile(compiledata.c). [Coverity] --- src/libespeak-ng/compiledata.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/libespeak-ng/compiledata.c b/src/libespeak-ng/compiledata.c index 46c48a55..9e5eab6f 100644 --- a/src/libespeak-ng/compiledata.c +++ b/src/libespeak-ng/compiledata.c @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include @@ -1310,10 +1311,16 @@ static int LoadWavefile(FILE *f, const char *fname) // data contains: 4 bytes of length (n_samples * 2), followed by 2-byte samples (lsb byte first) length = Read4Bytes(f); - while (!feof(f)) { - c1 = fgetc(f); - c3 = fgetc(f); - if (feof(f)) break; + while (true) { + int c; + + if ((c = fgetc(f)) == EOF) + break; + c1 = (unsigned char)c; + + if ((c = fgetc(f)) == EOF) + break; + c3 = (unsigned char)c; c2 = c3 << 24; c2 = c2 >> 16; // sign extend