fix(security): implement P1 loopback session token, P2 AAD filename binding, and P4 memory zeroization

This commit is contained in:
2026-09-09 21:24:07 +02:00
parent 98bfac718f
commit 771c08ff0f
7 changed files with 323 additions and 64 deletions
+6 -5
View File
@@ -867,7 +867,7 @@ impl Database {
let mut matched_record = None;
for r in rows {
let (id, p_id, enc_name, is_dir, size, c_at, m_at) = r?;
let dec_name = decrypt_node_name(dek, &enc_name).unwrap_or(enc_name);
let dec_name = decrypt_node_name(dek, p_id.unwrap_or(0), &enc_name).unwrap_or(enc_name);
if dec_name == *segment {
matched_record = Some(NodeRecord {
id,
@@ -918,8 +918,9 @@ impl Database {
let record = stmt
.query_row(params![id], |row| {
let enc_name: String = row.get(2)?;
let p_id: Option<i64> = row.get(1)?;
let name = if vault_id == 1 {
decrypt_node_name(dek, &enc_name).unwrap_or(enc_name)
decrypt_node_name(dek, p_id.unwrap_or(0), &enc_name).unwrap_or(enc_name)
} else {
enc_name
};
@@ -961,7 +962,7 @@ impl Database {
let rows = stmt.query_map(params![parent_id], |row| {
let enc_name: String = row.get(2)?;
let name = if vault_id == 1 {
decrypt_node_name(dek, &enc_name).unwrap_or(enc_name)
decrypt_node_name(dek, parent_id, &enc_name).unwrap_or(enc_name)
} else {
enc_name
};
@@ -1002,7 +1003,7 @@ impl Database {
let conn = self.conn.lock().unwrap();
let stored_name = if vault_id == 1 {
encrypt_node_name(dek, name)
encrypt_node_name(dek, parent_id, name)
} else {
name.to_string()
};
@@ -1084,7 +1085,7 @@ impl Database {
let now = current_timestamp();
let conn = self.conn.lock().unwrap();
let stored_name = if vault_id == 1 {
encrypt_node_name(dek, new_name)
encrypt_node_name(dek, new_parent_id, new_name)
} else {
new_name.to_string()
};