Re: [PATCH] Correct passing of DPKG_ADMINDIR to maintainer scripts with --root
Hi Steve,
Steve Langasek wrote:
> --- a/src/help.c
> +++ b/src/help.c
> @@ -186,6 +186,11 @@ preexecscript(struct command *cmd)
> size_t instdirl;
>
> if (*instdir) {
> + if (strstr(admindir, instdir) == admindir)
> + /* Already forked, safe to modify the environment; strip off the chroot
> + path from our admin dir so this works under the chroot */
> + if (setenv("DPKG_ADMINDIR", admindir+strlen(instdir), 1) < 0)
> + ohshite(_("unable to setenv for subprocesses"));
strstr can be slow. :) Why not:
size_t instdirlen = strlen(instdir);
if (strncmp(admindir, instdir, instdirlen) == 0) {
/* ... explanatory comment ... */
if (setenv("DPKG_ADMINDIR", admindir + instdirlen, 1) < 0)
ohshite(_(...));
}
Thanks,
Jonathan
Reply to: