From 8e7ca311f55fe2074e5b02a17249c5a707edeb3c Mon Sep 17 00:00:00 2001 From: doug-gilbert <32302704+doug-gilbert@users.noreply.github.com> Date: Wed, 28 Feb 2018 11:49:45 -0500 Subject: [PATCH 12/13] Add files via upload smp_conf_phy_event: fix file pointer leak; --- diff --git a/src/smp_conf_phy_event.c b/src/smp_conf_phy_event.c index b2ad100..70ce4f5 100644 --- a/src/smp_conf_phy_event.c +++ b/src/smp_conf_phy_event.c @@ -336,6 +336,7 @@ build_joint_arr(const char * file_name, unsigned char * pes_arr, char line[512]; int off = 0; int in_len, k, j, m, have_stdin, ind, bit0, err; + int ret = 0; char * lcp; FILE * fp; unsigned int unum; @@ -376,7 +377,8 @@ build_joint_arr(const char * file_name, unsigned char * pes_arr, if ((k < in_len) && ('#' != lcp[k])) { fprintf(stderr, "build_joint_arr: syntax error at " "line %d, pos %d\n", j + 1, m + k + 1); - return 1; + ret = 1; + goto fini; } for (k = 0; k < 1024; ++k) { unum = get_unum(lcp, &err); @@ -386,7 +388,8 @@ build_joint_arr(const char * file_name, unsigned char * pes_arr, if (ind >= max_arr_len) { fprintf(stderr, "build_joint_arr: array length " "exceeded\n"); - return 1; + ret = 1; + goto fini; } if (bit0) thres_arr[ind] = unum; @@ -394,7 +397,8 @@ build_joint_arr(const char * file_name, unsigned char * pes_arr, if (unum > 255) { fprintf(stderr, "build_joint_arr: pes (%u) too " "large\n", unum); - return 1; + ret = 1; + goto fini; } pes_arr[ind] = (unsigned char)unum; } @@ -412,7 +416,8 @@ build_joint_arr(const char * file_name, unsigned char * pes_arr, fprintf(stderr, "build_joint_arr: error in " "line %d, at pos %d\n", j + 1, (int)(lcp - line + 1)); - return 1; + ret = 1; + goto fini; } } off += (k + 1); @@ -420,10 +425,14 @@ build_joint_arr(const char * file_name, unsigned char * pes_arr, if (0x1 & off) { fprintf(stderr, "build_joint_arr: expect LBA,NUM pairs but decoded " "odd number\n from %s\n", have_stdin ? "stdin" : file_name); - return 1; + ret = 1; + goto fini; } *arr_len = off >> 1; - return 0; +fini: + if (! have_stdin) + fclose(fp); + return ret; } static void -- 2.19.1