iGame is a MUI-based frontend for launching WHDLoad titles. George 'walkero' Sokianos has again made some changes to the open source program and released version 2.6.0 for AmigaOS 3/4 and MorphOS:
It's #Introduction time!
I'm Devlin (they/them). I'm a volunteer Community Manager for various Discord servers. I also make games for PC.
I like classic computers, especially the Amstrad CPC, and run a Discord server for it at https://discord.gg/4QZqfCr
My games are available on
https://devlin.itch.io/
If you like what I do and would like to donate, you can find my Ko-Fi here -
https://ko-fi.com/magicbane
In 2003 I met with RJ Mical, the architect of AmigaOS user interface Intuition. I showed off our #MorphOS operating system, which is largely based on AmigaOS concepts and designs. It's not often that you get to meet one of your childhood heroes!
The MorphOS discord has officially gone public! come and join the MorphOS community at:
Loving the #morphos vid by @ActionRetro
https://www.youtube.com/watch?v=EGLbNZ19_74
Preview video:
"Hans Kloss - Agent J-23" is a fan project based on the Polish platform game "Hans Kloss", which was released in 1992/93 for Atari home computers and the C64.
The new edition is to be released for MorphOS, Windows and Linux.
🎉 Behold the "next-gen" mainboard that's 30 years late to the party, designed for the ghost towns of #AmigaOS4 and MorphOS! 🎈 It's like resurrecting a dinosaur and assuring everyone it's the future of transportation. 🦖💾
https://mirari.vitasys.nl/ #nextgenmainboard #MorphOS #technostalgia #retrocomputing #resurrection #HackerNews #ngated
The Next-Gen Mainboard Designed with AmigaOS4 and MorphOS in Mind
#HackerNews #NextGenMainboard #AmigaOS4 #MorphOS #Technology #News #HardwareDesign
Fantastic news: the new PPC "Mirari" motherboard boots MorphOS successfully!!! :)
I found and fixed yet another use after free bug in pdksh. This bug is likely about 30 years old or so.
- c_eval (shell "eval" command) creates a new "strict source" "s" from current env ATEMP: https://github.com/Orc/pdksh/blob/131021a130337e3313195c9d321c6aa40b4e291d/c_sh.c#L429
- c_eval passes the created source to "shell" function:
https://github.com/Orc/pdksh/blob/131021a130337e3313195c9d321c6aa40b4e291d/c_sh.c#L459
- "shell" calls "compile" function: https://github.com/Orc/pdksh/blob/131021a130337e3313195c9d321c6aa40b4e291d/main.c#L593
- "compile" function assigns the global "source" pointer to the passed source: https://github.com/Orc/pdksh/blob/131021a130337e3313195c9d321c6aa40b4e291d/syn.c#L790
At some point (I didn't bother tracing exactly where and in what circumstances - certain parts of gmp-6.3.0 configure script trigger it, at least on our platform) the ATEMP associated with the "env" gets released via call to "reclaim", but the "source" pointer will continue to point to the already released memory. This leads to classic Use After Free condition and all kinds of havoc and eventually a crash.
The fix is easy enough: Save and restore the original source pointer in c_eval:
--- pdksh-5.2.14/c_sh.c 1999-07-13 19:54:44.000000000 +0300
+++ pdksh-5.2.14-fixed/c_sh.c 2025-05-20 23:08:41.162128448 +0300
@@ -423,6 +423,8 @@
char **wp;
{
register struct source *s;
+ struct source *sold;
+ int ret;
if (ksh_getopt(wp, &builtin_opt, null) == '?')
return 1;
@@ -456,7 +458,10 @@
exstat = subst_exstat;
}
- return shell(s, FALSE);
+ sold = source;
+ ret = shell(s, FALSE);
+ source = sold;
+ return ret;
}
int