Fixing memory access violation issues

This commit is contained in:
darealshinji 2017-06-21 15:33:43 +02:00
parent 71106b1794
commit 2b645a7f55
4 changed files with 13 additions and 27 deletions

View file

@ -1,23 +1,14 @@
--- a/AppRun.c
+++ b/AppRun.c
@@ -44,6 +44,8 @@
#define LINE_SIZE 255
+char *checkrt(char *usr_in_appdir);
+
int filter(const struct dirent *dir) {
char *p = (char*) &dir->d_name;
p = strrchr(p, '.');
@@ -156,6 +158,7 @@
@@ -156,6 +156,7 @@
char *old_env;
const int length = 2047;
char new_env[8][length+1];
+ char *optional = checkrt(usr_in_appdir);
+ checkrt(usr_in_appdir);
/* https://docs.python.org/2/using/cmdline.html#envvar-PYTHONHOME */
snprintf(new_env[0], length, "PYTHONHOME=%s/usr/", appdir);
@@ -164,7 +167,7 @@
@@ -164,7 +165,7 @@
snprintf(new_env[1], length, "PATH=%s/usr/bin/:%s/usr/sbin/:%s/usr/games/:%s/bin/:%s/sbin/:%s", appdir, appdir, appdir, appdir, appdir, old_env);
old_env = getenv("LD_LIBRARY_PATH") ?: "";

View file

@ -1,4 +1,5 @@
CFLAGS ?= -O2 -Wall -Wextra
CFLAGS += -include checkrt.h
LDFLAGS += -s
BIN = AppRun_patched

View file

@ -44,10 +44,10 @@
#define CXXDIR "optional/libstdc++"
#define GCCDIR "optional/libgcc"
char optional[1024];
char *checkrt(char *usr_in_appdir)
void checkrt(char *usr_in_appdir)
{
char path[1024];
int ret;
FILE *f;
char command[LINE_SIZE];
@ -99,22 +99,14 @@ char *checkrt(char *usr_in_appdir)
if (gcc_bundle_ver > gcc_sys_ver)
bundle_gcc = 1;
char *tmp;
if (bundle_cxx == 1 && bundle_gcc == 0) {
sprintf(path, "%s/" CXXDIR ":", usr_in_appdir);
strcpy(tmp, path);
return tmp;
sprintf(optional, "%s/" CXXDIR ":", usr_in_appdir);
} else if (bundle_cxx == 0 && bundle_gcc == 1) {
sprintf(path, "%s/" GCCDIR ":", usr_in_appdir);
strcpy(tmp, path);
return tmp;
sprintf(optional, "%s/" GCCDIR ":", usr_in_appdir);
} else if (bundle_cxx == 1 && bundle_gcc == 1) {
sprintf(path, "%s/" GCCDIR ":%s/" CXXDIR ":", usr_in_appdir, usr_in_appdir);
strcpy(tmp, path);
return tmp;
sprintf(optional, "%s/" GCCDIR ":%s/" CXXDIR ":", usr_in_appdir, usr_in_appdir);
} else {
sprintf(optional, "%s", "");
}
return "";
}

2
checkrt.h Normal file
View file

@ -0,0 +1,2 @@
extern char optional[1024];
extern void checkrt(char *usr_in_appdir);