From 3dc01f3e7a0f7b686c14e2f2a62df8189d7c8297 Mon Sep 17 00:00:00 2001 From: Carsten Haitzler Date: Fri, 14 Dec 2012 05:28:16 +0000 Subject: [PATCH] fix filedesc leak in tempget when errs happen - based on info from maxime, but written differently. SVN revision: 80914 --- src/modules/temperature/tempget.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/modules/temperature/tempget.c b/src/modules/temperature/tempget.c index bfad5c799..7bad3d97f 100644 --- a/src/modules/temperature/tempget.c +++ b/src/modules/temperature/tempget.c @@ -373,7 +373,7 @@ init(void) static int check(void) { - FILE *f; + FILE *f = NULL; int ret = 0; int temp = 0; char buf[4096]; @@ -424,13 +424,13 @@ check(void) char dummy[4096]; if (fgets(buf, sizeof(buf), f) == NULL) goto error; - + fclose(f); + f = NULL; buf[sizeof(buf) - 1] = 0; if (sscanf(buf, "%s %s %i", dummy, dummy, &temp) == 3) ret = 1; else goto error; - fclose(f); } else goto error; @@ -442,8 +442,8 @@ check(void) if (f) { if (fgets(buf, sizeof(buf), f) == NULL) goto error; - fclose(f); + f = NULL; buf[sizeof(buf) - 1] = 0; if (sscanf(buf, "%i", &temp) == 1) ret = 1; @@ -461,9 +461,9 @@ check(void) if (f) { if (fgets(buf, sizeof(buf), f) == NULL) goto error; - + fclose(f); + f = NULL; buf[sizeof(buf) - 1] = 0; - /* actually read the temp */ if (sscanf(buf, "%i", &temp) == 1) ret = 1; @@ -471,7 +471,6 @@ check(void) goto error; /* Hack for temp */ temp = temp / 1000; - fclose(f); } else goto error; @@ -482,9 +481,9 @@ check(void) if (f) { if (fgets(buf, sizeof(buf), f) == NULL) goto error; - + fclose(f); + f = NULL; buf[sizeof(buf) - 1] = 0; - /* actually read the temp */ if (sscanf(buf, "%i", &temp) == 1) ret = 1; @@ -492,7 +491,6 @@ check(void) goto error; /* Hack for temp */ temp = temp / 1000; - fclose(f); } else goto error; @@ -505,9 +503,9 @@ check(void) char *p, *q; if (fgets(buf, sizeof(buf), f) == NULL) goto error; - - buf[sizeof(buf) - 1] = 0; fclose(f); + f = NULL; + buf[sizeof(buf) - 1] = 0; p = strchr(buf, ':'); if (p) { @@ -531,9 +529,9 @@ check(void) if (f) { if (fgets(buf, sizeof(buf), f) == NULL) goto error; - - buf[sizeof(buf) - 1] = 0; fclose(f); + f = NULL; + buf[sizeof(buf) - 1] = 0; temp = atoi(buf); temp /= 1000; ret = 1; @@ -550,6 +548,8 @@ check(void) return -999; error: + if (f) fclose(f); + f = NULL; sensor_type = SENSOR_TYPE_NONE; if (sensor_name) free(sensor_name); sensor_name = NULL;