mirror of
https://github.com/Drop-OSS/drop.git
synced 2026-08-21 14:01:29 +10:00
Fix archive backend crash (#475)
* Fix archive backend * Fix overflow bug + add workflow * Potential fix for pull request finding 'CodeQL / Workflow does not contain permissions' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com> * Fix lint --------- Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
This commit is contained in:
co-authored by
Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
parent
e654cdf52e
commit
c5a70e6801
@@ -0,0 +1,57 @@
|
||||
name: Torrential CI
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [develop]
|
||||
paths:
|
||||
- "torrential/**"
|
||||
- "libraries/droplet/**"
|
||||
- "libraries/droplet_types/**"
|
||||
- "libraries/libarchive/**"
|
||||
- ".github/workflows/torrential-ci.yml"
|
||||
pull_request:
|
||||
branches: [develop]
|
||||
paths:
|
||||
- "torrential/**"
|
||||
- "libraries/droplet/**"
|
||||
- "libraries/droplet_types/**"
|
||||
- "libraries/libarchive/**"
|
||||
- ".github/workflows/torrential-ci.yml"
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
env:
|
||||
CARGO_TERM_COLOR: always
|
||||
|
||||
jobs:
|
||||
ci:
|
||||
name: Build & Test
|
||||
runs-on: ubuntu-latest
|
||||
defaults:
|
||||
run:
|
||||
working-directory: torrential
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Rust toolchain
|
||||
uses: dtolnay/rust-toolchain@nightly
|
||||
|
||||
- name: Rust cache
|
||||
uses: swatinem/rust-cache@v2
|
||||
with:
|
||||
workspaces: "./torrential -> target"
|
||||
|
||||
# Required by the droplet-rs path dependency (libarchive bindings).
|
||||
- name: Install libarchive
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y libarchive-dev
|
||||
|
||||
- name: Build
|
||||
run: cargo build --all-targets --verbose
|
||||
|
||||
- name: Run tests
|
||||
run: cargo test --verbose
|
||||
@@ -1,4 +1,6 @@
|
||||
#![deny(clippy::all)]
|
||||
// `#[async_trait]` emits `#[must_use]` on futures that are already `#[must_use]`, tripping `double_must_use`.
|
||||
#![allow(clippy::double_must_use)]
|
||||
#![feature(impl_trait_in_bindings)]
|
||||
pub mod file_utils;
|
||||
pub mod manifest;
|
||||
|
||||
@@ -41,8 +41,8 @@ impl AsyncRead for ArchiveReader {
|
||||
) -> std::task::Poll<std::io::Result<()>> {
|
||||
if let Some(block) = &mut self.prev_block {
|
||||
let to_read = buf.remaining().min(block.len());
|
||||
let result = block.split_off(to_read);
|
||||
buf.put_slice(&result);
|
||||
buf.put_slice(&block[..to_read]);
|
||||
block.drain(..to_read);
|
||||
|
||||
// If the block is empty, we can read more
|
||||
if block.is_empty() {
|
||||
|
||||
@@ -161,7 +161,7 @@ impl DropServer {
|
||||
|
||||
{
|
||||
let mut mutex_lock = self.write_stream.lock().await;
|
||||
mutex_lock.write(&buf.len().to_le_bytes()).await?;
|
||||
mutex_lock.write_all(&buf.len().to_le_bytes()).await?;
|
||||
mutex_lock.write_all(&buf).await?;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user