summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Goergens <matthias.goergens@gmail.com>2023-03-28 13:35:56 +0800
committerNikolaus Rath <Nikolaus@rath.org>2023-03-28 21:32:00 +0100
commitf2144c6c3a0d4eda5f8384b56cdeb5193a3c06ef (patch)
tree3415679206b12099779e24f5dae2809bcce2b4a5
parent1703ccb31c68ea883f909e188a9550adda5665c3 (diff)
downloadfuse-f2144c6c3a0d4eda5f8384b56cdeb5193a3c06ef.tar.gz
Fix use-after-free warning
When building, I get the following warning: ```bash $ ninja [18/71] Compiling C object lib/libfuse3.so.3.14.1.p/modules_iconv.c.o ../lib/modules/iconv.c: In function ‘iconv_convpath’: ../lib/modules/iconv.c:85:38: warning: pointer ‘newpath’ may be used after ‘realloc’ [-Wuse-after-free] 85 | p = tmp + (p - newpath); | ~~~^~~~~~~~~~ ../lib/modules/iconv.c:80:31: note: call to ‘realloc’ here 80 | tmp = realloc(newpath, newpathlen + 1); | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [71/71] Linking target example/passthrough_hp ``` It's a false positive, I thinks. But it's also easy to silence this warning with a small refactor.
-rw-r--r--lib/modules/iconv.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/lib/modules/iconv.c b/lib/modules/iconv.c
index 3d18a36..a0bf72b 100644
--- a/lib/modules/iconv.c
+++ b/lib/modules/iconv.c
@@ -77,12 +77,13 @@ static int iconv_convpath(struct iconv *ic, const char *path, char **newpathp,
inc = (pathlen + 1) * 4;
newpathlen += inc;
+ int dp = p - newpath;
tmp = realloc(newpath, newpathlen + 1);
err = -ENOMEM;
if (!tmp)
goto err;
- p = tmp + (p - newpath);
+ p = tmp + dp;
plen += inc;
newpath = tmp;
}