Skip to content

server: do not NPE when a VPN provider returns no per-user result - #14047

Open
nagaboinaramgopal wants to merge 1 commit into
apache:4.20from
nagaboinaramgopal:fix/vpn-users-null-apply-result
Open

server: do not NPE when a VPN provider returns no per-user result#14047
nagaboinaramgopal wants to merge 1 commit into
apache:4.20from
nagaboinaramgopal:fix/vpn-users-null-apply-result

Conversation

@nagaboinaramgopal

Copy link
Copy Markdown

applyVpnUsers sizes a Boolean[] finals to the user list but only populates it inside the if (results != null) block. A RemoteAccessVPNServiceProvider that returns null (for example when the VPN network has no router yet) leaves entries null, and the consumption loop unboxed them with if (finals[i]), throwing NullPointerException and aborting the entire apply. Treat a null entry as not-applied with Boolean.TRUE.equals.

Tested: new unit test applyVpnUsersHandlesNullProviderResultWithoutNpe (fails before, passes after); RemoteAccessVpnManagerImplTest green.

applyVpnUsers sizes a Boolean[] finals to the user list but only populates it
inside the if (results != null) block. A RemoteAccessVPNServiceProvider that
returns null (for example when the VPN network has no router yet) leaves entries
null, and the later consumption loop unboxed them with if (finals[i]), throwing
NullPointerException and aborting the entire apply/add/remove-user operation.
Treat a null entry as not-applied with Boolean.TRUE.equals.

@DaanHoogland DaanHoogland left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

clgtm, good practice but I doubt this would be a possible issue ever, the loop filling finals above seems airtight.

@codecov

codecov Bot commented Sep 4, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 0% with 1 line in your changes missing coverage. Please review.
✅ Project coverage is 16.35%. Comparing base (2cd8c5e) to head (bf30cba).

Files with missing lines Patch % Lines
.../cloud/network/vpn/RemoteAccessVpnManagerImpl.java 0.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff            @@
##               4.20   #14047   +/-   ##
=========================================
  Coverage     16.34%   16.35%           
- Complexity    13574    13581    +7     
=========================================
  Files          5669     5669           
  Lines        501368   501368           
  Branches      60903    60903           
=========================================
+ Hits          81964    82000   +36     
+ Misses       410219   410175   -44     
- Partials       9185     9193    +8     
Flag Coverage Δ
uitests 4.14% <ø> (ø)
unittests 17.21% <0.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@abh1sar

abh1sar commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

@blueorangutan package

@abh1sar abh1sar self-assigned this Sep 7, 2026
@blueorangutan

Copy link
Copy Markdown

@abh1sar a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress.

@blueorangutan

Copy link
Copy Markdown

Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 19124

@DaanHoogland

Copy link
Copy Markdown
Contributor

@abh1sar , do you think smoke tests will make us the wiser? I think this is a hardening we can merge like this.

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

Projects

Status: Backlog

Development

Successfully merging this pull request may close these issues.

4 participants