cached_fs_rom: fix off-by-one in symlink copy_cstring

This commit is contained in:
Ehmry - 2020-12-06 19:52:20 +01:00
parent 9c2a92cdf1
commit 74b4c0df69
1 changed files with 60 additions and 9 deletions

View File

@ -1,7 +1,7 @@
From e65583c3e9cf0e9c326bb2d414d40fa32f64f9c6 Mon Sep 17 00:00:00 2001 From c82e375d1be5789abe830097b315cf07d3debd28 Mon Sep 17 00:00:00 2001
From: Emery Hemingway <ehmry@posteo.net> From: Emery Hemingway <ehmry@posteo.net>
Date: Tue, 3 Nov 2020 15:28:56 +0100 Date: Tue, 3 Nov 2020 15:28:56 +0100
Subject: [PATCH 1/3] cached_fs_rom: resolve symlinks Subject: [PATCH 1/5] cached_fs_rom: resolve symlinks
Follow symlinks from ROM requests to files. This complicates the Follow symlinks from ROM requests to files. This complicates the
implementation but allows ROM requests to be redirected at both the implementation but allows ROM requests to be redirected at both the
@ -654,13 +654,13 @@ index 9e4e4d0eee..bac2c075a9 100755
if (stray_pkt) if (stray_pkt)
-- --
2.28.0 2.29.2
From 8e994fdb882071d224b1bb2b6efc711571b523f0 Mon Sep 17 00:00:00 2001 From 0cf27a3632bc8efe70196d396371712d06803712 Mon Sep 17 00:00:00 2001
From: Emery Hemingway <ehmry@posteo.net> From: Emery Hemingway <ehmry@posteo.net>
Date: Tue, 3 Nov 2020 17:37:50 +0100 Date: Tue, 3 Nov 2020 17:37:50 +0100
Subject: [PATCH 2/3] cached_fs_rom: add directory session policy Subject: [PATCH 2/5] cached_fs_rom: add directory session policy
Support for directing ROM requests into directories by policy. Support for directing ROM requests into directories by policy.
--- ---
@ -735,13 +735,13 @@ index bac2c075a9..8df3001111 100755
bool diag = session_diag_from_args(args.string()).enabled; bool diag = session_diag_from_args(args.string()).enabled;
-- --
2.28.0 2.29.2
From c98ba6fd70938804833e5c65a18d01c60f5be17f Mon Sep 17 00:00:00 2001 From f053d112495905c973d75988bdbd8b6aa8146ee9 Mon Sep 17 00:00:00 2001
From: Emery Hemingway <ehmry@posteo.net> From: Emery Hemingway <ehmry@posteo.net>
Date: Thu, 5 Nov 2020 21:22:31 +0100 Date: Thu, 5 Nov 2020 21:22:31 +0100
Subject: [PATCH 3/3] cached_fs_rom: do not apply directory for absolute ROMs Subject: [PATCH 3/5] cached_fs_rom: do not apply directory for absolute ROMs
If the ROM name starts with / then do not apply a directory policy. If the ROM name starts with / then do not apply a directory policy.
--- ---
@ -779,5 +779,56 @@ index 8df3001111..4479b41e87 100755
bool diag = session_diag_from_args(args.string()).enabled; bool diag = session_diag_from_args(args.string()).enabled;
-- --
2.28.0 2.29.2
From 41b272f81805a01d34049351b489d45c422653a8 Mon Sep 17 00:00:00 2001
From: Emery Hemingway <ehmry@posteo.net>
Date: Sat, 7 Nov 2020 11:40:49 +0100
Subject: [PATCH 4/5] cached_fs_rom: log request args
---
repos/os/src/server/cached_fs_rom/main.cc | 1 +
1 file changed, 1 insertion(+)
diff --git a/repos/os/src/server/cached_fs_rom/main.cc b/repos/os/src/server/cached_fs_rom/main.cc
index 4479b41e87..29549b009a 100755
--- a/repos/os/src/server/cached_fs_rom/main.cc
+++ b/repos/os/src/server/cached_fs_rom/main.cc
@@ -464,6 +464,7 @@ struct Cached_fs_rom::Main final : Genode::Session_request_handler
}
bool diag = session_diag_from_args(args.string()).enabled;
+ if (diag) log("request for ", args);
/* lookup the ROM in the cache */
Cached_rom *rom = nullptr;
--
2.29.2
From 920cc12ad99f0460cdcdcee4fca6d879df362a91 Mon Sep 17 00:00:00 2001
From: Emery Hemingway <ehmry@posteo.net>
Date: Sun, 6 Dec 2020 19:45:01 +0100
Subject: [PATCH 5/5] cached_fs_rom: fix off-by-one in symlink copy_cstring
---
repos/os/src/server/cached_fs_rom/main.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/repos/os/src/server/cached_fs_rom/main.cc b/repos/os/src/server/cached_fs_rom/main.cc
index 29549b009a..0919bf6831 100755
--- a/repos/os/src/server/cached_fs_rom/main.cc
+++ b/repos/os/src/server/cached_fs_rom/main.cc
@@ -345,7 +345,7 @@ struct Cached_fs_rom::Main final : Genode::Session_request_handler
}
char buf[Path::capacity()];
- copy_cstring(buf, fs.tx()->packet_content(packet), n);
+ copy_cstring(buf, fs.tx()->packet_content(packet), n+1);
if (*buf == '/')
transfer.final_path = Path(buf);
else
--
2.29.2