Skip to content

Conversation

@dooly123
Copy link
Collaborator

The last LTS release was before we attempted 600+ users. Since then, we have made further improvements and fixed bugs

The differences are bug fixes, ui changes, and IK changes

@dooly123 dooly123 enabled auto-merge (squash) December 19, 2025 00:20
@dooly123 dooly123 disabled auto-merge December 19, 2025 00:22
@dooly123 dooly123 closed this Dec 19, 2025
@dooly123 dooly123 reopened this Dec 19, 2025
dooly123 and others added 11 commits December 20, 2025 01:44
Update opus to v1.6 and include MacOS binaries.
* add rnnoise binaries

* mac build fixes

* Remove unused Mac-specific Unity rendering settings

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

* added mac build of opus from @SineVector241

* add asmdef ignores for macos as needed

* Opus 1.6.0 https://github.com/AvionBlock/OpusSharp/releases/tag/v1.6.0

* add asmdefs for ios visionos tvos

* add mic permission requirement for apple builds

* clean up

* Fix assembly reference: use correct name with space

Changed "Basis_Framework" to "Basis Framework" to match the actual
assembly name defined in Basis Framework.asmdef.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
@aicodeguard
Copy link

Code Review – Key Findings

Summary:
This review identified 3 critical issues, primarily focusing on security vulnerabilities where sensitive credentials (passwords) are logged in plain text, and a concurrency bug that could lead to system crashes.

Issues

  1. [Security] Plain-text Credential Logging in Client Console
    The ReadString helper method logs every configuration value it reads, including Password and AvatarPassword. This exposes credentials in the application logs.

    • File: Basis Server/BasisNetworkClientConsole/BasisNetworkClientConsole/ConfigManager.cs
    • Line: 30
    • Fix: Remove the BNL.Log call in ReadString or filter out keys containing "Password".
  2. [Security] Plain-text Server Password Logging
    The ProcessEnvironmentalOverrides method iterates through all configuration fields and logs their values if an environment variable override exists. This includes the server Password field.

    • File: Basis Server/BasisNetworkCore/BasisServerConfiguration.cs
    • Line: 100
    • Fix: Modify the logging logic to check if the field name is sensitive (e.g., "Password") and redact the value in the log output.
  3. [Bug] Race Condition in Static Initialization
    The AvatarSyncSize property uses a non-thread-safe lazy initialization pattern. IsWired is set to true before avatarSyncSize is calculated. A concurrent thread could read IsWired as true and return avatarSyncSize as 0, causing downstream buffer allocation failures.

    • File: Basis Server/BasisNetworkCore/Compression/BasisBitPackingConstants.cs
    • Lines: 17-22
    • Fix: Move the initialization to a static constructor or use a lock block to ensure atomicity.

@yewnyx
Copy link
Collaborator

yewnyx commented Jan 15, 2026

                if (IsWired == false)
                {
                    IsWired = true;
                    //156 = 12 + 8 + 2 + 134
                    avatarSyncSize = WritePosition + WriteRotation + WriteScale + SumBitsPerSlot();
                }
                return avatarSyncSize;

Just FYI, this pattern of lazy initialization is definitely not threadsafe, if you use it anywhere else.

Also, why does your constants file hold public non-constant non-readonly integer variables? Also the byte arrays are mutable (their reference is readonly, but not their contents).

@Toys0125
Copy link
Contributor

Just FYI, this pattern of lazy initialization is definitely not threadsafe, if you use it anywhere else.

I find it interesting that the aicodeguard says the exact same thing. Only 20 mins before you.

@yewnyx
Copy link
Collaborator

yewnyx commented Jan 15, 2026

Just FYI, this pattern of lazy initialization is definitely not threadsafe, if you use it anywhere else.

I find it interesting that the aicodeguard says the exact same thing. Only 20 mins before you.

Not at all. I took a look at that to see if it was actually worthwhile and think it is worth a human actually saying "yes this is real"

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.