From d7300e882bdaa2dfe7bf3c0b2d3ba60300dd5016 Mon Sep 17 00:00:00 2001 From: Norman Feske Date: Fri, 17 Aug 2012 08:29:03 +0200 Subject: [PATCH] tar_rom: Ignore leading './' in tar archives --- os/src/server/tar_rom/main.cc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/os/src/server/tar_rom/main.cc b/os/src/server/tar_rom/main.cc index 712c80947..606bcf232 100755 --- a/os/src/server/tar_rom/main.cc +++ b/os/src/server/tar_rom/main.cc @@ -82,8 +82,15 @@ class Rom_session_component : public Genode::Rpc_object Genode::ascii_to(_tar_addr + block_id*_BLOCK_LEN + _FIELD_SIZE_LEN, &file_size, 8); + /* get name of tar record */ + char const *record_filename = _tar_addr + block_id*_BLOCK_LEN; + + /* skip leading dot of path if present */ + if (record_filename[0] == '.' && record_filename[1] == '/') + record_filename++; + /* get infos about current file */ - if (Genode::strcmp(_filename, _tar_addr + block_id*_BLOCK_LEN) == 0) { + if (Genode::strcmp(_filename, record_filename) == 0) { _file_size = file_size; _file_addr = _tar_addr + (block_id+1) * _BLOCK_LEN; file_found = true;