Repository navigation
fix(login): initialize PacketEvents encryption wrapper and bufferLock - #4
Merged
Merged
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Production issue
On 2026-10-13 00:42:59 +0700, after P2P v1.0.7 fixed the pre-login
TemporaryPlayer->CraftPlayertransport cast, FastLoginPlus'sProtocolLibLoginSource.enableOnlinemode()failed to send itsLOGIN.SERVER.ENCRYPTION_REQUEST:NullPointerException: Cannot enter synchronized block because wrappper.bufferLock is null. FastLoginPlus then logged that it fell back to cracked login, so this is authentication-sensitive.Root cause and fix
P2P's
PacketContainer(PacketType)uses constructor-skippingObjectAllocatorto allocate PacketEvents wrappers, leavingPacketWrapper.final bufferLockandregistriesuninitialized. For security-sensitiveWrapperLoginServerEncryptionRequest, instantiate via PacketEvents' own public constructor withshouldAuthenticate=true(FastLoginPlus also explicitly sets it); preserve client protocol version. For other newly allocated wrappers, create a genuine base PacketWrapper template and copy the runtime-invariant per-packetbufferLockand registries, preserving existingpacketTypeDataand PacketContainer field mapping.Validation
Production deployment requires backup + controlled Minecraft restart and verification with real Java premium/cracked login paths. Do not claim complete fix from build success alone.