Skip to content

Commit

Permalink
prevents from fetching too big http entity
Browse files Browse the repository at this point in the history
  • Loading branch information
mariotaku committed Feb 18, 2025
1 parent 35db979 commit 9aaecea
Showing 1 changed file with 4 additions and 6 deletions.
10 changes: 4 additions & 6 deletions src-tauri/src/device_manager/manager.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,6 @@ impl DeviceManager {
Ok(())
}

//noinspection HttpUrlsUsage
pub async fn novacom_getkey(&self, address: &str, passphrase: &str) -> Result<String, Error> {
let content = Self::key_server_fetch(address).await?;

Expand Down Expand Up @@ -164,7 +163,6 @@ impl DeviceManager {
})
}

//noinspection HttpUrlsUsage
async fn key_server_fetch(host: &str) -> Result<String, Error> {
let address = format!("{host}:9991");
tauri::async_runtime::spawn_blocking(move || {
Expand All @@ -174,20 +172,20 @@ impl DeviceManager {
stream.write(b"Connection: close\r\n")?;
stream.write(b"\r\n")?;

let mut data = Vec::new();
stream.read_to_end(&mut data)?;
let mut buffer = [0u8; 65536];
let buffer_size = stream.read(&mut buffer)?;
let mut headers = [httparse::EMPTY_HEADER; 64];
let mut response = Response::new(&mut headers);
let Status::Complete(size_to_skip) = response
.parse(&data)
.parse(&buffer[..buffer_size])
.map_err(|e| IoError::new(std::io::ErrorKind::InvalidData, e))?
else {
return Err(Error::NotFound);
};
if response.code.unwrap() != 200 {
return Err(Error::NotFound);
}
Ok(String::from_utf8_lossy(&data[size_to_skip..]).to_string())
Ok(String::from_utf8_lossy(&buffer[size_to_skip..buffer_size]).to_string())
})
.await
.unwrap()
Expand Down

0 comments on commit 9aaecea

Please sign in to comment.