Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prevent double use of git cat-file session. (#29298) #29301

Merged
merged 4 commits into from
Feb 22, 2024

Commits on Feb 21, 2024

  1. Prevent double use of git cat-file session. (go-gitea#29298)

    Fixes the reason why go-gitea#29101 is hard to replicate.
    Related go-gitea#29297
    
    Create a repo with a file with minimum size 4097 bytes (I use 10000) and
    execute the following code:
    ```go
    gitRepo, err := gitrepo.OpenRepository(db.DefaultContext, <repo>)
    assert.NoError(t, err)
    
    commit, err := gitRepo.GetCommit(<sha>)
    assert.NoError(t, err)
    
    entry, err := commit.GetTreeEntryByPath(<file>)
    assert.NoError(t, err)
    
    b := entry.Blob()
    
    // Create a reader
    r, err := b.DataAsync()
    assert.NoError(t, err)
    defer r.Close()
    
    // Create a second reader
    r2, err := b.DataAsync()
    assert.NoError(t, err) // Should be no error but is ErrNotExist
    defer r2.Close()
    ```
    
    The problem is the check in `CatFileBatch`:
    
    https://github.com/go-gitea/gitea/blob/79217ea63c1f77de7ca79813ae45950724e63d02/modules/git/repo_base_nogogit.go#L81-L87
    `Buffered() > 0` is used to check if there is a "operation" in progress
    at the moment. This is a problem because we can't control the internal
    buffer in the `bufio.Reader`. The code above demonstrates a sequence
    which initiates an operation for which the code thinks there is no
    active processing. The second call to `DataAsync()` therefore reuses the
    existing instances instead of creating a new batch reader.
    KN4CK3R committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    33fb820 View commit details
    Browse the repository at this point in the history
  2. Fix import.

    KN4CK3R committed Feb 21, 2024
    Configuration menu
    Copy the full SHA
    8082eaf View commit details
    Browse the repository at this point in the history

Commits on Feb 22, 2024

  1. Configuration menu
    Copy the full SHA
    bda3984 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    dff23f7 View commit details
    Browse the repository at this point in the history