]> sourceware.org Git - glibc.git/commitdiff
stdlib: Fix BZ #26241 testcase on GNU/Hurd
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Wed, 24 Mar 2021 00:36:20 +0000 (01:36 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Wed, 24 Mar 2021 20:58:05 +0000 (21:58 +0100)
GNU/Hurd's readlink system call is partly implemented in userspace, which
also allocates a buffer on the stack for the result, and thus needs one
more path.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
stdlib/tst-canon-bz26341.c

index 6d054596b59b02b1f47b5fc73fd2a4d3e277747b..acb0fd4ec30537bf2a8c42f7ef8b39806f5a2271 100644 (file)
@@ -67,15 +67,16 @@ do_realpath (void *arg)
      for each symlink in the path, leading to MAXSYMLINKS times PATH_MAX
      maximum stack usage.
      This stack allocations tries fill the thread allocated stack minus
-     both the resolved path (plus some slack) and the realpath (plus some
-     slack).
+     the resolved path (plus some slack), the realpath (plus some
+     slack), and the system call usage (plus some slack).
      If realpath uses more than 2 * PATH_MAX plus some slack it will trigger
      a stackoverflow.  */
 
+  const size_t syscall_usage = 1 * PATH_MAX + 1024;
   const size_t realpath_usage = 2 * PATH_MAX + 1024;
   const size_t thread_usage = 1 * PATH_MAX + 1024;
   size_t stack_size = support_small_thread_stack_size ()
-                     - realpath_usage - thread_usage;
+                     - syscall_usage - realpath_usage - thread_usage;
   char stack[stack_size];
   char *resolved = stack + stack_size - thread_usage + 1024;
 
This page took 0.039237 seconds and 5 git commands to generate.