Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: jline/jline3
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 4.3.0
Choose a base ref
...
head repository: jline/jline3
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 4.3.1
Choose a head ref
  • 3 commits
  • 10 files changed
  • 1 contributor

Commits on Jun 30, 2026

  1. fix: warn on insecure permissions when history file created concurrently

    When Files.createFile() races with another process and throws
    FileAlreadyExistsException, call warnIfAccessibleByOthers() so a
    concurrently-created file with group/world-readable permissions
    does not silently skip the security warning.
    gnodet authored Jun 30, 2026
    Configuration menu
    Copy the full SHA
    0e62bbf View commit details
    Browse the repository at this point in the history
  2. fix: guard regex matching against catastrophic backtracking (ReDoS)

    Add SafeRegex utility that wraps regex input in a TimeoutCharSequence
    to enforce a wall-clock deadline during matching. Java's backtracking
    NFA engine can take exponential time on patterns with nested quantifiers
    (e.g. (a+)+b); the wrapper checks System.nanoTime() every 1024 charAt()
    calls and throws RegexTimeoutException if the deadline is exceeded.
    
    Fixed 8 locations where user-controlled input was matched as a regex
    without protection:
    - Less: search and display-filter matching
    - Nano: regex search mode
    - grep: removed unsafe .* wrapping, use find() instead of matches()
    - Commands (history -m): glob pattern now uses SafeRegex.compileGlob()
    - DefaultHistory (HISTORY_IGNORE): glob patterns properly quoted
    - LineReaderImpl: Ctrl-R/Ctrl-S search and history suggestion matching
    - AttributedString.styleMatches: search highlight rendering
    
    Addresses GHSA-r2xf-8xr9-62gw, GHSA-2v9w-34q6-wpqx,
    GHSA-ph9c-7hw9-vhhw, GHSA-5q95-hrpc-m3w3.
    
    Closes #2012
    gnodet authored Jun 30, 2026
    Configuration menu
    Copy the full SHA
    1d5fc30 View commit details
    Browse the repository at this point in the history
  3. fix: add synchronized to fillInStackTrace override (S3551)

    Add synchronized modifier to ExitShellException.fillInStackTrace()
    to match the parent Throwable.fillInStackTrace() contract.
    
    Fixes SonarCloud S3551 which was causing the Quality Gate to fail
    on master (C Reliability Rating on New Code).
    
    Closes #2019
    gnodet authored Jun 30, 2026
    Configuration menu
    Copy the full SHA
    6b83c24 View commit details
    Browse the repository at this point in the history
Loading