81 lines
2.8 KiB
Diff
81 lines
2.8 KiB
Diff
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
|
|
|