Sisyphus repositório
Última atualização: 1 outubro 2023 | SRPMs: 18631 | Visitas: 37757034
en ru br
ALT Linux repositórios
S:0.8.0-alt1

Group :: Sistema/Base
RPM: bubblewrap

 Main   Changelog   Spec   Patches   Sources   Download   Gear   Bugs e FR  Repocop 

Patch: bubblewrap-fix-run-path.patch
Download


diff --git a/bubblewrap.c b/bubblewrap.c
index b3d52bc..4e3e51b 100644
--- a/bubblewrap.c
+++ b/bubblewrap.c
@@ -2910,7 +2910,34 @@ main (int    argc,
          we don't want to error out here */
     }
 
-  if (execvp (argv[0], argv) == -1)
+  const char *path = getenv ("PATH");
+  int result = 0;
+  size_t file_len = strnlen (argv[0], NAME_MAX) + 1;
+  size_t path_len = strnlen (path, PATH_MAX - 1) + 1;
+
+  if (strchr (argv[0], '/') != NULL) {
+    result = execvp (argv[0], argv);
+  } else {
+    const char *subp;
+    char buffer[path_len + file_len + 1];
+    for (const char *p = path; ; p = subp) {
+      subp = strchrnul (p, ':');
+      if (subp - p >= path_len) {
+        if (*subp == '\0') {
+          break;
+        }
+        continue;
+      }
+      char *pend = mempcpy (buffer, p, subp - p);
+      *pend = '/';
+      memcpy (pend + (p < subp), argv[0], file_len);
+      result = execvp (buffer, argv);
+      if (*subp++ == '\0')
+        break;
+    }
+  }
+
+  if (result == -1)
     {
       if (setup_finished_pipe[1] != -1)
         {
 
projeto & código: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
mantenedor atual: Michael Shigorin
mantenedor da tradução: Fernando Martini aka fmartini © 2009