Skip to content

feat(libSceNpMatching2): check sceNpMatching2GetUserInfoList requests offline - #16108

Open
MarrasFederico wants to merge 1 commit into
boykopovar:mainfrom
MarrasFederico:feat/np-matching2-user-info-list-checks
Open

MarrasFederico wants to merge 1 commit into
boykopovar:mainfrom
MarrasFederico:feat/np-matching2-user-info-list-checks

Conversation

@MarrasFederico

@MarrasFederico MarrasFederico commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

What

sceNpMatching2GetUserInfoList threw for every call. Firmware 13.42, run natively in #12623, showed an order unlike the other requests: a null parameter (0x80550C0A), then the context, then the parameter contents. A zeroed parameter gave CONTEXT_NOT_FOUND (0x80550C06) on an unknown context, 0x80550C3B on the A context 258, and INVALID_SERVER_ID (0x80550C0C) on context 1.

The export now follows that order: not initialized, null request or request id, unknown context, A context (0x80550C3B, INVALID_CONTEXT in shadPS4's np_error.h), then server id 0. A request that passes them still throws: the run did not show how an accepted request completes offline.

  • The initialization check first and the null request id check are not in the measurement; they follow the other request calls and shadPS4.
  • The signature matches the other request calls; sceNpMatching2GetUserInfoListA is unchanged.

Not measured on a console.

Tested

Ubuntu 26.04.1, kernel 7.0.0, GCC 15.2.0, Release, BUILD_TESTING=ON, on main 6e6dae4e8b. Windows and macOS were not compiled here. No title was run.

  • guest_np_matching2_offline passes. New cases: before initialization; a null request on known and unknown contexts; a null request id; a zeroed request on context 99, on the A context and on context 1.
  • Main's body (an unconditional throw) aborts the new test. Removing only the A-context check fails at an A context did not return 0x80550C3B; restoring it passes.
  • check_conventions.py --base upstream/main passes.
  • pr_overlap.py: #15476 adds test cases next to these in GuestNpMatching2Offline.cpp, without implementing this export; that hunk needs a merge whichever lands second. My #16109 adds its debt line and tests in the same spots. #14212 only respaces the debt file.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed under Silent stubs in their library's technical debt file
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • Fixes: none
  • Unblocks: none
  • GPUs tested: n/a
  • AI-assisted: yes

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant