Skip to content

Releases: Critlist/restoHack

restoHack v1.1.5

13 Dec 02:45
a98fd8b

Choose a tag to compare

restoHack v1.1.5

Downloads

  • Linux Static Binary: restoHack-v1.1.5-linux-x86_64-static.tar.gz

    • Statically linked, runs on any x86_64 Linux
    • No dependencies required
  • Source Code: restoHack-v1.1.5-source.tar.gz

    • Full source for building on any platform
    • Requires CMake, C compiler, and ncurses

Verification

Verify downloads with SHA256 checksums:

sha256sum -c SHA256SUMS

What's New

-SAVE FORMAT: Save version incremented from 1 to 2 for safe pointer serialization

  • Pointers in struct you now serialized as semantic IDs instead of raw memory addresses
  • usick_cause (sickness cause string) saved as object type index or special marker
  • uprops[].p_tofn (timeout function pointers) saved as function IDs
  • Struct dump now zeroes all pointer fields before writing
  • Version 1 saves automatically migrate to Version 2 on load
  • Pre-versioned saves (no magic number) now rejected with clear error message
  • Fixes segfault risk in multi-user server environments (ASLR, process address space changes)

Fixed

  • SECURITY: Pointer serialization vulnerabilities in save/restore system
    • usick_cause pointer became invalid after restore, causing segfaults on timeout
    • Function pointers in uprops[] saved as raw addresses, invalid on restore
    • Raw pointers in struct dump could cause undefined behavior across process invocations
    • Added post-restore validation for state consistency (Sick flag vs usick_cause)
    • Graceful handling of corrupted save data (fallback to safe defaults, no crashes)

Building from Source

tar xzf restoHack-v1.1.5-source.tar.gz
cd restoHack-v1.1.5
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/hack

restoHack v1.1.4

12 Sep 05:29

Choose a tag to compare

restoHack v1.1.4

Downloads

  • Linux Static Binary: restoHack-v1.1.4-linux-x86_64-static.tar.gz

    • Statically linked, runs on any x86_64 Linux
    • No dependencies required
  • Source Code: restoHack-v1.1.4-source.tar.gz

    • Full source for building on any platform
    • Requires CMake, C compiler, and ncurses

Verification

Verify downloads with SHA256 checksums:

sha256sum -c SHA256SUMS

What's New

Fixed

  • CRITICAL: Fixed save/restore crash when accessing inventory after restore
    • Object tail strings (scroll labels, etc.) weren't NUL-terminated after restore
    • Class table pointers (oc_name, oc_descr) became stale after restore, pointing to old process addresses
    • Now properly allocates extra byte for NUL termination on restore
    • Preserves static string pointers from binary while maintaining shuffled descriptions
    • Added range checks for object name length and NULL guards for string operations

Changed

  • Updated README features section

Building from Source

tar xzf restoHack-v1.1.4-source.tar.gz
cd restoHack-v1.1.4
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/hack

restoHack v1.1.3

10 Sep 01:52

Choose a tag to compare

restoHack v1.1.3

Downloads

  • Linux Static Binary: restoHack-v1.1.3-linux-x86_64-static.tar.gz

    • Statically linked, runs on any x86_64 Linux
    • No dependencies required
  • Source Code: restoHack-v1.1.3-source.tar.gz

    • Full source for building on any platform
    • Requires CMake, C compiler, and ncurses

Verification

Verify downloads with SHA256 checksums:

sha256sum -c SHA256SUMS

What's New

Fixed

  • CRITICAL: Fixed "Cannot get status of hack" error on Ubuntu systems
    • Bug prevented game from running when invoked with path (./hack, /usr/bin/hack)
    • Caused by security validation modifying argv[0] used for PATH resolution
    • Affected Ubuntu 22.04/24.04 but not Arch Linux due to invocation differences
    • Fix preserves original argv[0] for PATH search while validating basename separately

Building from Source

tar xzf restoHack-v1.1.3-source.tar.gz
cd restoHack-v1.1.3
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/hack

restoHack v1.1.2

05 Sep 07:04

Choose a tag to compare

restoHack v1.1.2

Downloads

  • Linux Static Binary: restoHack-v1.1.2-linux-x86_64-static.tar.gz

    • Statically linked, runs on any x86_64 Linux
    • No dependencies required
  • Source Code: restoHack-v1.1.2-source.tar.gz

    • Full source for building on any platform
    • Requires CMake, C compiler, and ncurses

Verification

Verify downloads with SHA256 checksums:

sha256sum -c SHA256SUMS

What's New

Changed

  • DOCUMENTATION: Updated HISTORY_OF_HACK.md to include Hack 1.0.2 (April 1985) in timeline
  • DOCUMENTATION: Updated references to cite original Linux.com article by Julie Bresnick (2000)

Fixed

  • BUILD: Fixed string overflow warning in hack.topl.c pline() function by adding n0 > 0 check

Building from Source

tar xzf restoHack-v1.1.2-source.tar.gz
cd restoHack-v1.1.2
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/hack

restoHack v1.1.1

31 Aug 06:49

Choose a tag to compare

restoHack v1.1.1

Downloads

  • Linux Static Binary: restoHack-v1.1.1-linux-x86_64-static.tar.gz

    • Statically linked, runs on any x86_64 Linux
    • No dependencies required
  • Source Code: restoHack-v1.1.1-source.tar.gz

    • Full source for building on any platform
    • Requires CMake, C compiler, and ncurses

Verification

Verify downloads with SHA256 checksums:

sha256sum -c SHA256SUMS

What's New

Added

  • Comprehensive security audit: Systematic review and hardening of all game logic files
  • Portability layer: Added compat.h for BSD function compatibility

Fixed

  • SECURITY: Fixed 150+ array bounds violations across all game systems
  • SECURITY: Added bounds checking to prevent buffer overflows
  • SECURITY: Fixed null pointer dereferences in monster, object, and room systems
  • SECURITY: Protected against integer overflow in tracking and scoring systems
  • SECURITY: Secured format string vulnerabilities in error reporting
  • SECURITY: Fixed memory corruption issues in worm segments and vault guards
  • CRITICAL: Strength overflow bug that could instantly kill players (eating spinach, potions)
  • CRITICAL: Coordinate sign conversion bugs causing wraparound issues
  • BUILD: Fixed format-nonliteral warnings with pragma directives
  • BUILD: Resolved index/rindex macro collisions with variable names

Changed

  • Removed index/rindex macros from hack.h, moved to compat.h
  • Renamed 'index' variable to 'idx' in makedefs.c to avoid collisions
  • Added format string validation to block dangerous %n specifier

Building from Source

tar xzf restoHack-v1.1.1-source.tar.gz
cd restoHack-v1.1.1
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
./build/hack

v1.0.6

14 Aug 00:09

Choose a tag to compare

Added

  • Historical references and fixed build config in CMake

v1.0.5 – Cavewoman Fix & Universal Tarball

12 Aug 08:06

Choose a tag to compare

[1.0.5] - 2025-08-12

Added

  • Coding standards documentation for non-original code contributions
  • Historical source files and game commands documentation

Changed

  • Refactored memory allocation functions to ANSI C standards with enhanced type safety
  • Improved asset copying logic to handle files uniformly with better error messaging
  • Updated CMake and CI configuration for BSD builds
  • Enhanced CPack configuration with optional packaging support

Technical

  • Preserved original 1984 behavior while eliminating casting requirements in memory allocation
  • Enhanced build system reliability across different platforms

restoHack v1.0.4

11 Aug 07:37

Choose a tag to compare

Changelog

All notable changes to restoHack will be documented in this file.

The format is based on Keep a Changelog,
and this project adheres to Semantic Versioning.

[1.0.4] - 2025-08-11

Added

  • Hybrid binary+source tarballs containing both static executable and source code
  • BSD-specific build instructions for FreeBSD, OpenBSD, and NetBSD
  • Support for building from hybrid tarballs without separate source download
  • CI testing for published hybrid tarballs on release tags
  • FreeBSD CI reliability improvements with enhanced error handling

Fixed

  • Shell syntax error in static-build.sh (apostrophe in comment breaking Docker string)
  • BusyBox tar compatibility issues with GNU tar-specific options
  • Missing source files in static binary releases preventing user rebuilds
  • CI flakes in FreeBSD environment by removing interactive game execution
  • TLS certificate issues in CI with ca_root_nss package addition

Changed

  • Static build script now includes CMakeLists.txt, config.h.in, and src/ directory
  • Updated documentation with hybrid tarball usage instructions
  • Improved cross-platform build documentation
  • Enhanced CI with hard failure tests for required files instead of soft warnings

[1.0.3] - 2025-08-10

Added

  • Portable RNG seeding with CMake feature detection
  • Support for arc4random, arc4random_buf, getentropy, and srandomdev across platforms
  • Proper curses library detection replacing hardcoded termcap linking
  • Fallback delay_output implementation for systems without curses version

Fixed

  • Build failures on NetBSD/pkgsrc due to missing delay_output symbol
  • Function name conflicts with curses library (unctrl, timeout, delay_output)
  • OS-specific #ifdef dependencies that broke portability
  • Hardcoded termcap library detection causing link failures

Changed

  • Replaced OS-specific #ifdef __linux__ with portable feature detection
  • Updated CMake to use find_package(Curses REQUIRED)
  • Renamed internal functions to avoid curses conflicts: unctrl()hack_unctrl(), timeout()hack_timeout()
  • Enhanced static build script with better library detection and quality checks

Technical

  • All original 1984 code preserved via comments, not deleted
  • Added comprehensive CMake feature detection for RNG functions
  • Improved static binary build process with libbsd support
  • Universal build compatibility across Linux, NetBSD, macOS

[1.0.2] - 2025-08-08

Added

  • Static binary release for Linux x86_64
  • Prebuilt distribution with no external dependencies
  • Enhanced static build pipeline with Docker-based compilation

Changed

  • Updated static build script for better reliability and reproducibility
  • Improved packaging with proper permissions and launcher script

Technical

  • Static linking against ncurses for zero-dependency distribution
  • Optimized binary size and performance

[1.0.1] - 2025-08-06

Added

  • Modern flock()-based locking system replacing unreliable 1984 link() locking
  • Automatic cleanup of stale lock files on process death
  • Enhanced save system with versioned directories and backup support

Fixed

  • "Game in progress" hangs caused by stale lock files
  • Filesystem compatibility issues with modern systems
  • Segfault in death screen (hack.rip.c) caused by buffer overflow in name centering
  • RIP screen display issues with various username lengths

Changed

  • Complete K&R to ANSI C conversion for entire codebase (~250 functions)
  • Updated read-only string literals to writable arrays for compiler compatibility
  • Improved error handling and memory safety throughout

Technical

  • Preserved 100% authentic 1984 gameplay mechanics and balance
  • Enhanced build system with CMake replacing vintage Makefiles
  • Modern signal handling for Unix window environments

[1.0.0] - 2025-08-01

Added

  • Initial public release of restoHack
  • Complete playable restoration of 1984 Hack game
  • All core game systems: character creation, inventory, combat, magic, shops
  • Full dungeon generation with authentic maze algorithms
  • Save/load system with proper exit handling
  • Terminal display with complete termcap support

Technical

  • CMake-based build system for modern compatibility
  • Cross-platform support (Linux, macOS, BSD)
  • POSIX-only dependencies for maximum portability
  • Complete preservation of original 1984 game logic
  • Zero external dependencies beyond standard C library and curses

Game Features

  • Multiple character classes: Tourist, Wizard, Fighter, Caveman
  • Authentic item generation and cursed/blessed mechanics
  • Monster AI including pets, shopkeepers, and guards
  • Magic system with potions, scrolls, and wands
  • Shop system with authentic billing mechanics
  • Permadeath with proper tombstone generation

restoHack v1.0.3

10 Aug 09:09

Choose a tag to compare

Fix: BSD srandomdev guard; add Cirrus-CI; FreeBSD compile verified.

RestoHack v1.0.2 – Static Binary Release

08 Aug 02:37

Choose a tag to compare

Running the Static Binary (Linux)

A prebuilt static binary is available for Linux x86_64.

1. Download the release tarball:

restoHack-static-20250808-linux-x86_64.tar.gz

2. Move the tarball to a clean folder (recommended):

mkdir -p ~/Games/restoHack
mv ~/Downloads/restoHack-static-20250808-linux-x86_64.tar.gz ~/Games/restoHack/
cd ~/Games/restoHack

3. Extract the tarball:

tar -xzf restoHack-static-20250808-linux-x86_64.tar.gz

4. Run the Game

./run-hack.sh