diff options
Diffstat (limited to 'meta/recipes-devtools/dpkg/dpkg/preinst.patch')
-rw-r--r-- | meta/recipes-devtools/dpkg/dpkg/preinst.patch | 75 |
1 files changed, 41 insertions, 34 deletions
diff --git a/meta/recipes-devtools/dpkg/dpkg/preinst.patch b/meta/recipes-devtools/dpkg/dpkg/preinst.patch index 06d2aacf3f..f9cb4089fb 100644 --- a/meta/recipes-devtools/dpkg/dpkg/preinst.patch +++ b/meta/recipes-devtools/dpkg/dpkg/preinst.patch @@ -6,41 +6,48 @@ Upstream-Status: Inappropriate [OE Specific] RP 2011/12/07 -Index: dpkg-1.15.8.7/src/help.c +Index: dpkg-1.16.8/src/script.c =================================================================== ---- dpkg-1.15.8.7.orig/src/help.c 2010-12-20 01:25:36.000000000 +0000 -+++ dpkg-1.15.8.7/src/help.c 2011-12-07 14:51:02.783461487 +0000 -@@ -181,30 +181,9 @@ - * FIXME: none of the stuff here will work if admindir isn't inside - * instdir as expected. - */ -- size_t instdirl; +--- dpkg-1.16.8.orig/src/script.c ++++ dpkg-1.16.8/src/script.c +@@ -102,38 +102,10 @@ setexecute(const char *path, struct stat + static const char * + preexecscript(struct command *cmd) + { +- const char *admindir = dpkg_db_get_dir(); +- size_t instdirl = strlen(instdir); - -- if (*instdir) { -- if (chroot(instdir)) ohshite(_("failed to chroot to `%.250s'"),instdir); -- if (chdir("/")) -- ohshite(_("failed to chdir to `%.255s'"), "/"); -- } -- if (f_debug & dbg_scripts) { -- struct varbuf args = VARBUF_INIT; -- const char **argv = cmd->argv; + if (*instdir) { +- if (strncmp(admindir, instdir, instdirl) != 0) +- ohshit(_("admindir must be inside instdir for dpkg to work properly")); +- if (setenv("DPKG_ADMINDIR", admindir + instdirl, 1) < 0) +- ohshite(_("unable to setenv for subprocesses")); - -- while (*++argv) { -- varbufaddc(&args, ' '); -- varbufaddstr(&args, *argv); -- } -- varbufaddc(&args, '\0'); -- debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename, args.buf); -- varbuf_destroy(&args); -- } -- instdirl= strlen(instdir); -- if (!instdirl) -- return cmd->filename; -- assert(strlen(cmd->filename) >= instdirl); -- return cmd->filename + instdirl; -+ if (*instdir) -+ setenv("D", instdir, 1); -+ return cmd->filename; - } +- if (chroot(instdir)) +- ohshite(_("failed to chroot to `%.250s'"), instdir); +- if (chdir("/")) +- ohshite(_("failed to chdir to `%.255s'"), "/"); ++ setenv("D", instdir, 1); + } +- if (debug_has_flag(dbg_scripts)) { +- struct varbuf args = VARBUF_INIT; +- const char **argv = cmd->argv; +- +- while (*++argv) { +- varbuf_add_char(&args, ' '); +- varbuf_add_str(&args, *argv); +- } +- varbuf_end_str(&args); +- debug(dbg_scripts, "fork/exec %s (%s )", cmd->filename, +- args.buf); +- varbuf_destroy(&args); +- } +- if (!instdirl) +- return cmd->filename; +- +- assert(strlen(cmd->filename) >= instdirl); +- return cmd->filename + instdirl; ++ return cmd->filename; + } - void + static int |