vw_small

Hardened fork of Vaultwarden (https://github.com/dani-garcia/vaultwarden) with fewer features.
git clone https://git.philomathiclife.com/repos/vw_small
Log | Files | Refs | README

commit 551810c4862506ed39780850a35ac12df1aca1a9
parent b987ba506db6cb56a72c1ba1f964f7e9d021a9d1
Author: Daniel GarcĂ­a <dani-garcia@users.noreply.github.com>
Date:   Wed, 17 Mar 2021 19:39:48 +0100

Fix updating file send

Diffstat:
Msrc/api/core/sends.rs | 28++++++++++++----------------
1 file changed, 12 insertions(+), 16 deletions(-)

diff --git a/src/api/core/sends.rs b/src/api/core/sends.rs @@ -48,7 +48,7 @@ pub struct SendData { /// modify existing ones, but is allowed to delete them. /// /// Ref: https://bitwarden.com/help/article/policies/#disable-send -fn enforce_disable_send_policy(headers: &Headers,conn: &DbConn) -> EmptyResult { +fn enforce_disable_send_policy(headers: &Headers, conn: &DbConn) -> EmptyResult { let user_uuid = &headers.user.uuid; let policy_type = OrgPolicyType::DisableSend; if OrgPolicy::is_applicable_to_user(user_uuid, policy_type, conn) { @@ -323,27 +323,23 @@ fn put_send(id: String, data: JsonUpcase<SendData>, headers: Headers, conn: DbCo err!("Sends can't change type") } - let data_val = if data.Type == SendType::Text as i32 { - data.Text - } else if data.Type == SendType::File as i32 { - data.File - } else { - err!("Invalid Send type") - }; - - let data_str = if let Some(mut d) = data_val { - d.as_object_mut().and_then(|d| d.remove("Response")); - serde_json::to_string(&d)? - } else { - err!("Send data not provided"); - }; + // When updating a file Send, we receive nulls in the File field, as it's immutable, + // so we only need to update the data field in the Text case + if data.Type == SendType::Text as i32 { + let data_str = if let Some(mut d) = data.Text { + d.as_object_mut().and_then(|d| d.remove("Response")); + serde_json::to_string(&d)? + } else { + err!("Send data not provided"); + }; + send.data = data_str; + } if data.DeletionDate > Utc::now() + Duration::days(31) { err!( "You cannot have a Send with a deletion date that far into the future. Adjust the Deletion Date to a value less than 31 days from now and try again." ); } - send.data = data_str; send.name = data.Name; send.akey = data.Key; send.deletion_date = data.DeletionDate.naive_utc();