58 lines
1.4 KiB
Diff
58 lines
1.4 KiB
Diff
From e0af6c60072391fe736ec2b1cdb0064af7eaddb7 Mon Sep 17 00:00:00 2001
|
|
From: huyan <hu.huyan@huawei.com>
|
|
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
|
|
|