From e0af6c60072391fe736ec2b1cdb0064af7eaddb7 Mon Sep 17 00:00:00 2001 From: huyan Date: Mon, 17 Jun 2019 12:21:00 +0800 Subject: [PATCH] backport remove bad frees from nfs/xcommon.c --- support/nfs/xcommon.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/support/nfs/xcommon.c b/support/nfs/xcommon.c index 14e580e..3989f0b 100644 --- a/support/nfs/xcommon.c +++ b/support/nfs/xcommon.c @@ -53,14 +53,17 @@ char * xstrconcat3 (const char *s, const char *t, const char *u) { char *res; - if (!s) s = ""; + int dofree = 1; + + if (!s) s = "", dofree=0; if (!t) t = ""; if (!u) u = ""; res = xmalloc(strlen(s) + strlen(t) + strlen(u) + 1); strcpy(res, s); strcat(res, t); strcat(res, u); - free((void *) s); + if (dofree) + free((void *) s); return res; } @@ -69,7 +72,9 @@ char * xstrconcat4 (const char *s, const char *t, const char *u, const char *v) { char *res; - if (!s) s = ""; + int dofree = 1; + + if (!s) s = "", dofree=0; if (!t) t = ""; if (!u) u = ""; if (!v) v = ""; @@ -78,7 +83,8 @@ xstrconcat4 (const char *s, const char *t, const char *u, const char *v) { strcat(res, t); strcat(res, u); strcat(res, v); - free((void *) s); + if (dofree) + free((void *) s); return res; } -- 1.8.3.1