summary refs log tree commit diff stats
path: root/results/scraper/launchpad-without-comments/1794086
diff options
context:
space:
mode:
authorChristian Krinitsin <mail@krinitsin.com>2025-06-30 12:24:58 +0000
committerChristian Krinitsin <mail@krinitsin.com>2025-06-30 12:27:06 +0000
commit33606b41d35115f887ea688b1a16f2ff85bf2fe4 (patch)
tree406b2c7b19a087ba437c68f3dbf0b589fa1d6150 /results/scraper/launchpad-without-comments/1794086
parentadedf8771bc4de3113041ca21bd4d0d1c0014b6a (diff)
downloadqemu-analysis-33606b41d35115f887ea688b1a16f2ff85bf2fe4.tar.gz
qemu-analysis-33606b41d35115f887ea688b1a16f2ff85bf2fe4.zip
add launchpad bug reports without comments
Diffstat (limited to 'results/scraper/launchpad-without-comments/1794086')
-rw-r--r--results/scraper/launchpad-without-comments/179408647
1 files changed, 47 insertions, 0 deletions
diff --git a/results/scraper/launchpad-without-comments/1794086 b/results/scraper/launchpad-without-comments/1794086
new file mode 100644
index 000000000..966a72147
--- /dev/null
+++ b/results/scraper/launchpad-without-comments/1794086
@@ -0,0 +1,47 @@
+readlink(2) returns incorrect size for /proc/self/exe
+
+readlink(2) seems to ignore the size of supplied buffer for the resolved name and always returns the actual size of the resolved name instead.
+
+Steps to reproduce:
+
+```bash
+echo '#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+int main(int argc, const char** argv)
+{
+    if(argc < 2) exit(1);
+    char buf[1];
+    printf("%d\n", readlink(argv[1], buf, sizeof(buf)));
+}' >test.c
+
+# I used GCC mipsel cross-compiler to reproduce this bug
+mipsel-linux-gnu-gcc-5.5 test.c -o a.out
+
+echo "PWD: `pwd`"
+qemu-mipsel ./a.out /proc/self/exe
+```
+
+Expected output (observed when running a.out natively on Linux 4.17 amd64):
+```
+PWD: /tmp/test
+1
+```
+
+Output observed when running with qemu-mipsel 2.1.2:
+```
+PWD: /tmp/test
+15
+```
+
+According to POSIX description of readlink [1], the function shall return the number of bytes written to the supplied buffer, which obviously cannot exceed size of the buffer.
+
+Note that the bug is only reproduced with links within /proc filesystem; links to the regular files within /home are resolved normally.
+
+The bug is present in qemu-mipsel 2.1.2:
+
+# qemu-mipsel -version
+qemu-mipsel version 2.1.2 (Debian 1:2.1+dfsg-12+deb8u6), Copyright (c) 2003-2008 Fabrice Bellard
+
+[1]: http://pubs.opengroup.org/onlinepubs/009695399/functions/readlink.html
\ No newline at end of file