From f961a1e2da8a942f420ce6320253f7839a0297de Mon Sep 17 00:00:00 2001 From: b4yuan Date: Tue, 20 Jun 2023 17:31:12 -0400 Subject: [PATCH 1/2] fix: check fscanf return values --- src/jose.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/jose.c b/src/jose.c index 6d518c2..3e0a5c9 100755 --- a/src/jose.c +++ b/src/jose.c @@ -309,8 +309,10 @@ void LoadEmb(char *emb_file, real *emb_ptr) { } // read embedding file FILE *fp = fopen(emb_file, "r"); - fscanf(fp, "%d", &vocab_size_tmp); - fscanf(fp, "%d", &word_dim); + if (fscanf(fp, "%d", &vocab_size_tmp) != 1 || fscanf(fp, "%d", &word_dim) != 1) { + printf("Embedding file read failed\n"); + exit(1); + } if (layer1_size != word_dim) { printf("Embedding dimension incompatible with pretrained file!\n"); exit(1); From a68f829bbf82050cf3a07c2bdcf1097277fc0c8c Mon Sep 17 00:00:00 2001 From: b4yuan Date: Tue, 20 Jun 2023 17:36:39 -0400 Subject: [PATCH 2/2] closing file during fail --- src/jose.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/jose.c b/src/jose.c index 3e0a5c9..85b7818 100755 --- a/src/jose.c +++ b/src/jose.c @@ -311,6 +311,7 @@ void LoadEmb(char *emb_file, real *emb_ptr) { FILE *fp = fopen(emb_file, "r"); if (fscanf(fp, "%d", &vocab_size_tmp) != 1 || fscanf(fp, "%d", &word_dim) != 1) { printf("Embedding file read failed\n"); + fclose(fp); exit(1); } if (layer1_size != word_dim) {