Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is this supposed to work with Keen 4 and 6? #5

Closed
jfortmann opened this issue Mar 13, 2017 · 3 comments
Closed

Is this supposed to work with Keen 4 and 6? #5

jfortmann opened this issue Mar 13, 2017 · 3 comments

Comments

@jfortmann
Copy link

I see that there are implementation files for Keen 4 and 6, but when I try to run with the corresponding data it crashes. Or do I need a specific version?

@sulix
Copy link
Owner

sulix commented Mar 13, 2017

At the moment, only the Keen 5 support has been fully released and tested (so, for example, the precompiled binary releases are Keen 5 only). The documentation also still only covers Keen 5.

However, there's support in the code for Keen 4 v1.4 and Keen 6 v1.5. If you build it yourself, you'll need the data files from those versions (plus the files in the data/keen?/ directory), and to run omnispeak with the "/episode 4" or "/episode 6" options.

I'm working on a proper release with Keen 4 and 6 support at the moment, though, and I'll update this bug when it's available.

tl;dr: Keen 4/6 support is coming very soon. The code is there, and works if you compile it yourself, but the released binaries are Keen 5 only for now.

@jfortmann
Copy link
Author

I think there was something wrong with my data files; I copied them from steam and now it works.

@sulix
Copy link
Owner

sulix commented Mar 15, 2017

Glad to hear that it's working!

The version 1.0 release is now live, as well, which makes support for Keen 4 and 6 official (and adds support for Keen 6 v1.4 EGA as well). There's some documentation and binary downloads (with Keen 4 already set up) at https://davidgow.net/keen/omnispeak.html as well.

Happy Keening!

@sulix sulix closed this as completed Mar 15, 2017
sulix added a commit that referenced this issue Feb 25, 2022
Thanks to @LoneFox78 for finding this issue.

The vl_parmStrings[] array was terminated with an empty string,
not a NULL pointer. This could cause US_CheckParm() to read past
the end of the array, as it ignored empty strings, but did not
treat them as a terminator.

The original game, however, did use "" as a terminator for its
equivalent of vl_parmStrings, and US_CheckParm() treated it the
same way as it treated NULL. We should do the same, rather than
changing the terminator in ID_VL.

AddressSanitizer shows the following error:
==18985==ERROR: AddressSanitizer: global-buffer-overflow on address 0x55b291d96198 at pc 0x55b291c9441a bp 0x7fffa349a080 sp 0x7fffa349a070
READ of size 8 at 0x55b291d96198 thread T0
    #0 0x55b291c94419 in US_CheckParm(char const*, char const**) (/home/david/Development/omnispeak/bin/omnispeak+0x50419)
    #1 0x55b291ca7308 in VL_Startup() (/home/david/Development/omnispeak/bin/omnispeak+0x63308)
    #2 0x55b291d3f40f in CK_InitGame() (/home/david/Development/omnispeak/bin/omnispeak+0xfb40f)
    #3 0x55b291d40175 in main (/home/david/Development/omnispeak/bin/omnispeak+0xfc175)
    #4 0x7fb36fb30d8f in __libc_start_call_main ../sysdeps/nptl/libc_start_call_main.h:58
    #5 0x7fb36fb30e3f in __libc_start_main_impl ../csu/libc-start.c:392
    #6 0x55b291c7d074 in _start (/home/david/Development/omnispeak/bin/omnispeak+0x39074)

0x55b291d96198 is located 0 bytes to the right of global variable 'vl_parmStrings' defined in 'id_vl.c:721:20' (0x55b291d96180) of size 24
SUMMARY: AddressSanitizer: global-buffer-overflow (/home/david/Development/omnispeak/bin/omnispeak+0x50419) in US_CheckParm(char const*, char const**)

Fixes: c505d6b ("id_vl: Initial support for /NOPAN parameter")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants