Skip to content

Bounds checking: ScrollPane.render - Viewport clipping without full validation #193

@sfloess

Description

@sfloess

File: src/main/java/org/flossware/curses/api/ScrollPane.java
Lines: 137-152

Issue:
Viewport clipping logic lacks comprehensive bounds validation:

for (int y = 0; y < viewportHeight; y++) {
    for (int x = 0; x < viewportWidth; x++) {
        int contentY = viewportY + y;
        int contentX = viewportX + x;
        // ... buffer access ...
    }
}

Trigger Scenario:

  • contentY or contentX exceed content buffer dimensions
  • Content buffer smaller than viewport
  • Result: ArrayIndexOutOfBoundsException when accessing content buffer

Fix:
Add comprehensive bounds validation:

for (int y = 0; y < viewportHeight; y++) {
    for (int x = 0; x < viewportWidth; x++) {
        int contentY = viewportY + y;
        int contentX = viewportX + x;
        
        if (contentY >= 0 && contentY < contentBuffer.length &&
            contentX >= 0 && contentX < contentBuffer[contentY].length) {
            // Safe buffer access
        }
    }
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcode-solve-in-progressIssue is currently being worked on by code-solve

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions