diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-07-17 09:10:43 +0200 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-07-17 09:10:43 +0200 |
| commit | f2ec263023649e596c5076df32c2d328bc9393d2 (patch) | |
| tree | 5dd86caab46e552bd2e62bf9c4fb1a7504a44db4 /results/scraper/fex/753 | |
| parent | 63d2e9d409831aa8582787234cae4741847504b7 (diff) | |
| download | qemu-analysis-main.tar.gz qemu-analysis-main.zip | |
Diffstat (limited to 'results/scraper/fex/753')
| -rw-r--r-- | results/scraper/fex/753 | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/results/scraper/fex/753 b/results/scraper/fex/753 new file mode 100644 index 000000000..e28fa6139 --- /dev/null +++ b/results/scraper/fex/753 @@ -0,0 +1,16 @@ +EmulatedFDManager::OpenAt breaks when reopening anonymous objects via /proc/self/fd +Not sure if any sane guest would do this. + +But if a guest was to open a socket or memfd (anything which isn't backed by a real path) and then tries to re-open it via the `/proc/self/fd/` handle, our syscall emulation crashes. + +the following gvisor tests do this: + + * memfd_test.jit.gvisor + * proc_test.jit.gvisor + * socket_abstract_test.jit.gvisor + * socket_filesystem_test.jit.gvisor + * socket_unix_pair_test.jit.gvisor + +The issue is that when `EmulatedFDManager::OpenAt` tries to resolve the canonical, absolute path, `std::filesystem::canonical` throws an exception because it obviously doesn't resolve an absolute path. + +The fix is probably just catching the exception and returning -1 when this happens. \ No newline at end of file |