On 10/31/13 11:03 AM, Martin Costabel wrote:
> On 29/10/13 16:31, TheSin wrote:
>> I honestly believe we need to patch tar to have a fallback when they
>> aren't set.  All this patching everywhere could easily be fixed if we
>> fix tar instead.  Sadly I'm not well enough versed in C to do so but
>> if someone could that would be super.
>
> I think I found it. At least I have now fixed versions of dpkg and tar
> that no longer crash as before.
>
> In fact, the crash of dpkg comes from a bug in dpkg that is independent
> of a similar bug in tar. That is, if you only fix dpkg as described
> below, it will work correctly even with the unfixed tar, but tar has its
> own crash that happens when it is run with LANG unset.
>
> The fix is a one-line patch for dpkg that can be written as a perl pie:
>
>    perl -pi.bak -e 's| (_\(\"failed)| N$1|' dpkg-deb/extract.c
>
> or as a diff:
>
> --- dpkg-deb/extract.c~    2003-10-25 22:03:21.000000000 +0200
> +++ dpkg-deb/extract.c    2013-10-31 18:00:47.000000000 +0100
> @@ -247 +247 @@
> -      stream_fd_copy(ar, p1[1], memberlen, _("failed to write to pipe
> in copy"));
> +      stream_fd_copy(ar, p1[1], memberlen, N_("failed to write to pipe
> in copy"));
>
> (this is for Fink's dpkg-1.10.21; I don't know if the bug is still
> present in the same form in new versions of dpkg).
>
> For tar, the corresponding perl script fixes 4 lines (it is possible
> that only one of them is essential)
>
>    perl -pi.bak -e 's|_\(\"tar|N$&|g' src/system.c
>
> (Here the bug is still present in the new version 1.27).
>
> Explanation:
> The error appears when a child process (tar in the case of dpkg, gzip or
> similar in the case of tar) is spawned via 'fork' and a string of the
> form _("string") appears between 'fork' and 'exec' commands. This calls
> gettext and hence libintl and the CoreFoundation framework. Calling
> frameworks between 'fork' and 'exec' is not safe, see CAVEATS in `man
> fork`. If one replaces '_("string")' by 'N_("string")', no gettext call
> is involved. One could also just replace it by '"string"', which is the
> same thing.
>

Thanks!

We can put these fixes out independently of the various wrappers that 
fink uses.  It'd be nice to take those out, too, but we'd have to be 
sure to avoid packaging deadlocks.
-- 
Alexander Hansen, Ph.D.
Fink User Liaison
My package updates: http://finkakh.wordpress.com/

------------------------------------------------------------------------------
Android is increasing in popularity, but the open development platform that
developers love is also attractive to malware creators. Download this white
paper to learn more about secure code signing practices that can help keep
Android apps secure.
http://pubads.g.doubleclick.net/gampad/clk?id=65839951&iu=/4140/ostg.clktrk
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
List archive:
http://news.gmane.org/gmane.os.apple.fink.devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to