Group :: Sistema/Base
RPM: bubblewrap
Main Changelog Spec Patches Sources Download Gear Bugs e FR Repocop
Patch: bubblewrap-fix-run-path.patch
Download
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)
{