Checklists

ROM checklist for MUDs

This checklist outlines the technical and operational requirements for deploying a ROM 2.4-based MUD in a modern production environment. It addresses common legacy code failures, security vulnerabilities, and configuration hurdles specific to the Diku/Merc lineage.

ROM checklist for MUDs hero illustration
Progress0 / 25 complete (0%)

Environment and Compilation

0/5
  • 64-bit Pointer Compatibility

    critical

    Verify that all pointer-to-integer casts in comm.c and act_wiz.c are updated to use intptr_t to prevent segmentation faults on 64-bit Linux hosts.

  • GCC Warning Audit

    recommended

    Compile using -Wall -Wextra flags and resolve all 'format-security' and 'unused-result' warnings to prevent runtime crashes during string processing.

  • Crypt Library Linkage

    critical

    Ensure the Makefile explicitly links against -lcrypt and that the code includes <crypt.h> to support modern glibc implementations of password hashing.

  • Directory Permission Hardening

    critical

    Set the /area, /player, and /gods directories to 750 permissions and ensure the binary does not run as the root user.

  • Startup Script Verification

    recommended

    Test the 'startup' shell script to ensure it correctly rotates log files and auto-restarts the process upon a crash.

Security and Authentication

0/5
  • Password Hashing Upgrade

    critical

    Replace the legacy DES-based crypt() with SHA-256 or Blowfish hashing within save.c to protect player credentials.

  • Wiznet Command Audit

    critical

    Verify that sensitive commands like 'shutdown', 'reboot', and 'ban' are restricted to level 60 (Implementor) in interp.c.

  • Buffer Overflow Mitigation

    critical

    Review read_from_buffer in comm.c to ensure input lengths are capped at MAX_INPUT_LENGTH before being processed.

  • IP Ban System Testing

    recommended

    Verify that the 'ban' command correctly writes to the ban.txt file and blocks connections from specified CIDR blocks at the socket level.

  • Multi-play Restriction

    optional

    Configure check_reconnect in comm.c to prevent or alert when multiple logins originate from the same IP address.

Database and File Integrity

0/5
  • Area File VNUM Validation

    critical

    Run a boot-time check to ensure no duplicate VNUMs exist across different .are files and that all exits lead to valid room VNUMs.

  • Pfile Corruption Recovery

    recommended

    Implement a 'backup' directory logic in save.c that retains the previous version of a player file before overwriting it during a save.

  • Help File Coverage

    recommended

    Verify that every skill, spell, and command defined in const.c and interp.c has a corresponding entry in help.are.

  • Object and Mobile Reset Audit

    recommended

    Check area reset headers to ensure mobiles and objects are not set to load in quantities that exceed MAX_MOB or MAX_OBJ limits.

  • Socials Table Integrity

    optional

    Verify that the socials.are file is correctly formatted and that no social command shares a name with a combat skill.

Networking and Performance

0/5
  • Hot-Reboot (Copyover) Verification

    recommended

    Execute a copyover and verify that descriptors are successfully passed to the new process without disconnecting active players.

  • Telnet Negotiation Check

    recommended

    Test using MUSHclient to ensure the server correctly handles NAWS (Window Size) and TTYPE (Terminal Type) sequences.

  • Memory Leak Detection

    recommended

    Run the codebase through Valgrind for 30 minutes of active play to identify leaks in recycle.c or mobile programs.

  • Descriptor Overflow Protection

    critical

    Verify that MAX_CLIENTS is set in merc.h and that the server rejects new connections gracefully when the limit is reached.

  • Output Buffer Flushes

    optional

    Ensure large outputs (like 'who' or 'map') are paginated via the show_page function to prevent socket buffer saturation.

Game Logic and Balance

0/5
  • Class/Race Stat Cap Enforcement

    critical

    Check handler.c to ensure that 'train' and 'perm_stat' calls cannot exceed the maximums defined in the pc_race_table.

  • Experience Scaling Audit

    recommended

    Test level 1, 25, and 50 mob kills to ensure the exp_compute function does not grant unintended levels of experience.

  • Stock Spell Refactoring

    recommended

    Review 'haste' and 'sanctuary' in magic.c to ensure they do not stack or provide unintended multipliers in PvP combat.

  • Equipment Level Restriction

    critical

    Verify that wear_obj in act_obj.c correctly prevents players from using items with a level requirement higher than their current level.

  • Death Recovery Logic

    critical

    Test the 'corpse' loading logic to ensure items are correctly transferred to the corpse and that the corpse VNUM is valid.