Repository navigation
fix: Bump embedded Guava to 33.8.0-jre to address CVE-2026-102554 - #246
Merged
Merged
Conversation
Guava 33.x no longer depends on jsr305 or checker-qual, which the SDK uses and previously received transitively, so those are now declared explicitly with the same versions Guava 32.0.1 supplied.
tanderson-ld
commented
Nov 2, 2026
| "guava": "32.0.1-jre", | ||
| "guava": "33.8.0-jre", | ||
| "jackson": "2.11.2", | ||
| "jsr305": "3.0.2", |
Contributor
Author
There was a problem hiding this comment.
For reviewers:
Guava 33.x dropped its jsr305 and checker-qual dependencies (it moved to JSpecify), and the SDK's own source imports those annotations and had been getting them transitively. I added both to libraries.internal pinned to the exact versions Guava 32.0.1 supplied (jsr305 3.0.2, checker-qual 3.33.0, they were already embedded and shaded in the released uberjar, so the jar contents stay the same rather than gaining anything new.
tanderson-ld
marked this pull request as ready for review
November 2, 2026 19:22
kinyoklion
approved these changes
Nov 2, 2026
tanderson-ld
pushed a commit
that referenced
this pull request
Nov 3, 2026
🤖 I have created a release *beep* *boop* --- ## [7.17.5](launchdarkly-java-server-sdk-7.17.4...launchdarkly-java-server-sdk-7.17.5) (2026-11-03) ### Bug Fixes * Bump embedded Guava to 33.8.0-jre to address CVE-2026-102554 ([#246](#246)) ([0d66cfb](0d66cfb)) * Deliver the terminal OFF data source status when the client is closed ([#247](#247)) ([f444bee](f444bee)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). <!-- CURSOR_SUMMARY --> --- > [!NOTE] > **Overview** > This **Release Please** PR cuts **launchdarkly-java-server-sdk 7.17.5** by bumping version metadata in `.release-please-manifest.json`, `gradle.properties`, `Version.SDK_VERSION`, and adding the **7.17.5** section to `CHANGELOG.md`. > > The release notes capture two bug fixes already merged on main: **embedded Guava is raised to 33.8.0-jre** (CVE-2026-102554), and **`DataSourceStatusProvider` listeners get a terminal OFF status when `LDClient` closes**, so shutdown no longer leaves apps waiting on a final status update. > > <sup>Reviewed by [Cursor Bugbot](https://cursor.com/bugbot) for commit 8d8b4d2. Bugbot is set up for automated code reviews on this repo. Configure [here](https://www.cursor.com/dashboard/bugbot).</sup> <!-- /CURSOR_SUMMARY --> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.
Fixes #242
Bumps the Guava version embedded (shaded) in
launchdarkly-java-server-sdkfrom 32.0.1-jre to 33.8.0-jre, the latest release on Maven Central. The issue asked for 33.7.2 or later, which is where CVE-2026-102554 is fixed; since the library is shaded and consumers cannot override it, going straight to the latest gives the most headroom before the next scanner finding.Why the extra two dependencies: Guava 33.x stopped depending on
jsr305andchecker-qual(it migrated its own nullness annotations to JSpecify). The SDK's source importsjavax.annotation.Nonnull/Nullableandorg.checkerframework.checker.nullness.qual.NonNulldirectly and had been getting those libraries transitively through Guava, so the bump alone breaks compilation. They are now declared explicitly inlibraries.internal, pinned to the same versions Guava 32.0.1 supplied (jsr305 3.0.2, checker-qual 3.33.0). Both were already embedded and shaded in the released uberjar, so this keeps the jar contents the same rather than adding anything new.Verification done locally:
CacheBuilder,MoreExecutors,Joiner,ByteStreams).META-INF/maven/com.google.guava/guava/pom.properties(the file Trivy reads) now reports33.8.0-jre.javax/annotationandorg/checkerframeworkclass entries in the rebuilt uberjar exactly match the released 7.17.4 jar (38 and 422 entries respectively). The only addition is four shadedorg/jspecify/annotationsclasses, Guava's new annotation dependency.pom.xmlis unchanged since internal dependencies are excluded from it.Note
Overview
Updates the embedded (shaded) Guava in
launchdarkly-java-server-sdkfrom 32.0.1-jre to 33.8.0-jre so the default uberjar addresses CVE-2026-102554 (fixed in Guava 33.7.2+). Because consumers cannot override shaded deps, the bump targets the latest release on Maven Central.Guava 33.x no longer pulls in jsr305 or checker-qual (nullness moved to JSpecify), but server SDK sources still import
javax.annotation.*and Checker Framework nullness types that previously came transitively through Guava. The build now declares and pinsjsr3053.0.2 andchecker-qual3.33.0 inlibraries.internalso compile and shading keep working with the same annotation classes as before.Reviewed by Cursor Bugbot for commit af70c32. Bugbot is set up for automated code reviews on this repo. Configure here.