diff options
author | Matthias Goergens <matthias.goergens@gmail.com> | 2023-03-28 13:35:56 +0800 |
---|---|---|
committer | Nikolaus Rath <Nikolaus@rath.org> | 2023-03-28 21:32:00 +0100 |
commit | f2144c6c3a0d4eda5f8384b56cdeb5193a3c06ef (patch) | |
tree | 3415679206b12099779e24f5dae2809bcce2b4a5 | |
parent | 1703ccb31c68ea883f909e188a9550adda5665c3 (diff) | |
download | fuse-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.c | 3 |
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; } |