Skip to content

[Crash] Multiple unchecked database result accesses without null validation #62

@coderabbitai

Description

@coderabbitai

Summary

Services server assumes database queries always return results, crashes when they don't.

Affected Areas

Throughout server-services/src/data_management/:

  1. accountManagement.js - user.ownedItemIds, user.loadout assumed non-null after getOne
  2. recordsManagement.js - code.used_by, code.item_ids, item.item_data assumed non-null
  3. Map/item data processing assumes arrays exist

Vulnerability

If database returns null or query fails silently, subsequent property access crashes.

Impact

  • Services server crash on data access
  • Authentication failures
  • Game state corruption

Recommended Fix

Add null checks after all database queries:

const user = await ss.getOne('SELECT * FROM users WHERE username = ?', [username]);
if (!user) return null;
// Now safe to access user.loadout, etc.

Use optional chaining for nested accesses:

user.ownedItemIds = JSON.parse(user.ownedItemIds || '[]');
user.loadout = JSON.parse(user.loadout || '{}');

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions