From 5abd127f3780ca2078962ace489bd4c32b5d545d Mon Sep 17 00:00:00 2001 From: Kali Kaneko Date: Wed, 14 Feb 2018 02:38:47 +0100 Subject: [pkg] packaging fixes for anonvpn bundle --- pkg/launcher/Makefile | 2 +- pkg/launcher/bitmask-launcher.c | 33 +++++++++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 5 deletions(-) (limited to 'pkg/launcher') diff --git a/pkg/launcher/Makefile b/pkg/launcher/Makefile index 8dd1013d..8948e6b4 100644 --- a/pkg/launcher/Makefile +++ b/pkg/launcher/Makefile @@ -1,5 +1,5 @@ CC = gcc -CFLAGS = -g -Wall +CFLAGS = -g -Wall -fPIE STRIP = strip default: bitmask diff --git a/pkg/launcher/bitmask-launcher.c b/pkg/launcher/bitmask-launcher.c index cf5c2a18..b9bda1c2 100644 --- a/pkg/launcher/bitmask-launcher.c +++ b/pkg/launcher/bitmask-launcher.c @@ -4,20 +4,45 @@ * part of the bitmask bundle. * execute main entrypoint in a child folder inside the bundle. * - * (c) LEAP Encryption Access Project, 2016. + * (c) LEAP Encryption Access Project, 2016-2018. * License: GPL. * */ #include #include +#include +#include +#include +#include -char* const bitmask_path = "lib"; -char* const entrypoint = "bitmask"; +#define MAXBUFFSIZE 1024 + +char* const lib = "/lib"; +char* const entrypoint = "app"; +char* const linkname = "/proc/self/exe"; int main(int argc, char *argv[]) { + char buf[MAXBUFFSIZE]; + char pth[MAXBUFFSIZE]; + char *dirc, *dname; + const size_t bufsize = MAXBUFFSIZE + 1; + argv[0] = entrypoint; - chdir(bitmask_path); + buf[0] = 0; + pth[0] = 0; + + readlink(linkname, buf, bufsize - 1); + + dirc = strdup(buf); + dname = dirname(dirc); + strncat(pth, dname, strlen(dname)); + strncat(pth, lib, strlen(lib)); + + if (chdir(pth) < 0) + { + fprintf(stderr, "error: %s\n", strerror(errno)); + } execv(entrypoint, argv); } -- cgit v1.2.3