[aur-general] Package proprietary softwares with hard-coded paths within /usr/local?

Chi-Hsuan Yen yan12125 at gmail.com
Tue Aug 8 14:38:57 UTC 2017


On Tue, Aug 8, 2017 at 11:13 AM, KY Chou <forendef2846 at gmail.com> wrote:
> That's a great solution!
> But it doesn't have to be the same length actually.
> A shorter path with padded 0x00s should also work fine.
>
> On Mon, Aug 7, 2017 at 3:16 AM, Chi-Hsuan Yen via aur-general
> <aur-general at archlinux.org> wrote:
>>
>> On Mon, Aug 7, 2017 at 2:35 AM, Eli Schwartz <eschwartz at archlinux.org>
>> wrote:
>> > On 08/06/2017 08:21 AM, Chi-Hsuan Yen via aur-general wrote:
>> >> Hello Arch enthusiasts,
>> >>
>> >> I'd like to create a package for Pulse Connect Secure, a popular VPN
>> >> software. Current PKGBUILD can be found at [1]. That package works
>> >> fine, but it conflicts with Arch's packaging guideline. [2]
>> >>
>> >> "Packages should never be installed to /usr/local"
>> >>
>> >> The reason I put files in /usr/local is that file paths are apparently
>> >> hard-coded. Specifically, the VPN frontend (pulseUi) loads assets from
>> >> /usr/local/pulse/html, and then it invokes /usr/local/pulse/pulsesvc
>> >> to actually connects to VPN.
>> >>
>> >> Is there a workaround for this?
>> >
>> > Not much you can do with software which encodes violations of packaging
>> > guidelines in its proprietary binaries. Depending on where the
>> > information is stored, you might be able to patch it...
>> >
>> > /usr/local/pulse *gags*
>> >
>> > If software insists on being installed to
>> > "/completely/arbitrary/directory" then you either package it anyway or
>> > you don't. But I suppose you could try asking them to install it in /opt
>> > instead.
>> >
>> > --
>> > Eli Schwartz
>> >
>>
>> Aha, didn't think of patching. That simple "fix" works! Many thanks!
>> The key is that the path before and after should have the same length.
>> [1]
>>
>> Best,
>>
>> Yen Chi Hsuan
>>
>> [1]
>> https://github.com/yan12125/aur/commit/0588f70772fae8bd84f87e56015bdc87a6729d90#diff-62ac6814f4207a45189d3491ca4e38f3R28
>
>

Tailing null bytes sounds absolutely interesting. But I get no luck
for this package. There's a line in the offensive binary:

file:////\x0/usr/local/pulse/\x0/html/

(\x0 indicates a null byte)

I tried several combinations:

file:////\x0/opt/pulse/\x0\x0\x0\x0\x0\x0\x0/html/
file:////\x0/opt/pulse//html/\x0\x0\x0\x0\x0\x0\x0
file:////\x0/opt/pulse/\x0/html/\x0\x0\x0\x0\x0\x0

Some doesn't run, and others uses a wrong path:

(pulseUi:1501): Gtk-WARNING **: Error loading icon from file '/opt/pulse/':
        Image file '/opt/pulse/' contains no data

or

(pulseUi:9589): Gtk-WARNING **: Error loading icon from file
'/opt/pulse//html//html/images/Pulse-Secure128x128.png':
        Failed to open file
'/opt/pulse//html//html/images/Pulse-Secure128x128.png': No such file
or directory

I think sticking to same-size patching is simpler :)

Best,

Yen Chi Hsuan


More information about the aur-general mailing list