You can probably try stuffing multiple consecutive slashes ('/') and they should be normalized into one. You can also play with "/./" if the program wasn't happy with consecutive slashes.
Chi-Hsuan Yen via aur-general <aur-general@archlinux.org>于2017年8月8日周二 22:39写道: > On Tue, Aug 8, 2017 at 11:13 AM, KY Chou <forendef2...@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@archlinux.org> wrote: > >> > >> On Mon, Aug 7, 2017 at 2:35 AM, Eli Schwartz <eschwa...@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 > -- Zhang, Hai Zhejiang University, Computer Science and Technology Blog: http://blog.zhanghai.me/ Github: https://github.com/DreaminginCodeZH