From 9297e2567dd7fd2fffacca9d6a2250c831883470 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sun, 16 May 2021 07:19:08 +0100 Subject: [PATCH] Fix protection error when checking if there's a cookie jar in Atari ST. --- setter/src/atarist/links.c | 18 ++++++++++++------ setter/src/atarist/os.c | 13 +++++++++---- setter/src/atarist/perms.c | 18 ++++++++++++------ 3 files changed, 33 insertions(+), 16 deletions(-) diff --git a/setter/src/atarist/links.c b/setter/src/atarist/links.c index 239ec83..109df24 100644 --- a/setter/src/atarist/links.c +++ b/setter/src/atarist/links.c @@ -35,14 +35,20 @@ Copyright (C) 2011-2021 Natalia Portillo void Links(const char* path) { - long** cookieJar = _p_cookies; - long cookie; - int rc; - FILE* h; - char driveNo = path[0] - '@'; + long* cookieJar; + long cookie; + int rc; + FILE* h; + char driveNo = path[0] - '@'; + long savessp; + + // Retrieve pointer to cookie jar in Supervisor mode + savessp = Super(0L); + cookieJar = *_p_cookies; + Super((void*)savessp); // Check for a cookie jar - if(*cookieJar == 0) return; + if(cookieJar == 0) return; // Check if MiNT or MagiC rc = (Getcookie(C_MiNT, &cookie) == E_OK) || (Getcookie(C_MagX, &cookie) == E_OK) || diff --git a/setter/src/atarist/os.c b/setter/src/atarist/os.c index 13e7d05..e1d0f88 100644 --- a/setter/src/atarist/os.c +++ b/setter/src/atarist/os.c @@ -41,14 +41,14 @@ void GetOsInfo() { OSHEADER* osHeader; unsigned short version; - long** cookieJar = _p_cookies; - long cookie = 0; + long* cookieJar; + long cookie = 0; char type[5]; int rc; struct _stemu_vars* stemu_vars; struct _tos2win_vars* tos2win_vars; MAGX_COOKIE* magic_vars; - int32_t savessp; + long savessp; // Retrieve the OS data in Supervisor mode savessp = Super(0L); @@ -93,8 +93,13 @@ void GetOsInfo() } } + // Retrieve pointer to cookie jar in Supervisor mode + savessp = Super(0L); + cookieJar = *_p_cookies; + Super((void*)savessp); + // Check for a cookie jar - if(*cookieJar == 0) return; + if(cookieJar == 0) return; // KAOS TOS rc = Getcookie(C__T30, &cookie); diff --git a/setter/src/atarist/perms.c b/setter/src/atarist/perms.c index 481e913..abe0055 100644 --- a/setter/src/atarist/perms.c +++ b/setter/src/atarist/perms.c @@ -37,14 +37,20 @@ Copyright (C) 2011-2021 Natalia Portillo void FilePermissions(const char* path) { - long** cookieJar = _p_cookies; - long cookie; - int rc, cRc, i; - FILE* file; - char driveNo = path[0] - '@'; + long* cookieJar; + long cookie; + int rc, cRc, i; + FILE* file; + char driveNo = path[0] - '@'; + long savessp; + + // Retrieve pointer to cookie jar in Supervisor mode + savessp = Super(0L); + cookieJar = *_p_cookies; + Super((void*)savessp); // Check for a cookie jar - if(*cookieJar == 0) return; + if(cookieJar == 0) return; // Check if MiNT or MagiC rc = (Getcookie(C_MiNT, &cookie) == E_OK) || (Getcookie(C_MagX, &cookie) == E_OK) ||