From 0ac6d940c336a033f59c1dad87d99b6868931bea Mon Sep 17 00:00:00 2001 From: Albert Cheng Date: Mon, 8 Dec 2008 23:08:24 -0500 Subject: [svn-r16170] Code clean up. Function get_unique_name() had potential string overflow problem. Fixed. Also removed some unused macros. Tested by h5committest. --- perform/zip_perf.c | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/perform/zip_perf.c b/perform/zip_perf.c index d7b75c7..d1d36b4 100644 --- a/perform/zip_perf.c +++ b/perform/zip_perf.c @@ -69,8 +69,6 @@ # define GZ_SUFFIX ".gz" #endif /* GZ_SUFFIX */ -#define SUFFIX_LEN (sizeof(GZ_SUFFIX) - 1) - #define ONE_KB 1024 #define ONE_MB (ONE_KB * ONE_KB) #define ONE_GB (ONE_MB * ONE_KB) @@ -88,8 +86,6 @@ #define FALSE (!TRUE) #endif /* FALSE */ -#define BUFLEN (16 * ONE_KB) -#define MAX_NAME_LEN ONE_KB /* internal variables */ static const char *prog; @@ -321,25 +317,28 @@ uncompress_buffer(Bytef *dest, uLongf *destLen, const Bytef *source, static void get_unique_name(void) { - const char *prefix = "", *tmpl = "zip_perf.data"; + const char *prefix = NULL, *tmpl = "zip_perf.data"; const char *env = getenv("HDF5_PREFIX"); - if (env) { + if (env) prefix = env; - strcat(prefix, "/"); - } - if (option_prefix) { + if (option_prefix) prefix = option_prefix; - strcat(prefix, "/"); - } - filename = calloc(1, strlen(prefix) + strlen(tmpl) + 1); + if (prefix) + /* 2 = 1 for '/' + 1 for null terminator */ + filename = (char *) HDmalloc(strlen(prefix) + strlen(tmpl) + 2); + else + filename = (char *) HDmalloc(strlen(tmpl) + 1); if (!filename) error("out of memory"); - strcpy(filename, prefix); + if (prefix){ + strcpy(filename, prefix); + strcat(filename, "/"); + } strcat(filename, tmpl); } -- cgit v0.12