Image files start with a dot 81/320681/1
authorMichal Bloch <m.bloch@samsung.com>
Wed, 5 Mar 2025 18:20:22 +0000 (19:20 +0100)
committerMichal Bloch <m.bloch@samsung.com>
Wed, 5 Mar 2025 19:16:20 +0000 (20:16 +0100)
Sessions named "foo.img" are valid, only names starting
with a dot are protected for technical reasons.

Change-Id: If0fc31dd124b189d27b71a588eb4ad985699979f

src/service/src/dir_backend_fixed_size.cpp
tests/api_tests/test_api_add_remove_user_err.cpp
tests/api_tests/test_hlp.hpp

index 6818a024741f6dcfe55210fb8c5630d1b1b39285..bf91b42e33cd0613e34b311d7de48bd17442bc18 100644 (file)
@@ -40,7 +40,7 @@ static const std::string TMP_NEW_PREFIX = ".tmpfixednew";
 
 fs::path DirBackendFixedSize::GetImagePathFromSubsessionPath(fs::path subsession_path)
 {
-       subsession_path.replace_filename(subsession_path.filename().native() + ".img");
+       subsession_path.replace_filename(".img."s + subsession_path.filename().native());
        return subsession_path;
 }
 
index 0f627791ebc302a05cf28a9a76c939226a2c0a46..dc2e744af44483fbb7b0dca50dde550c40727be4 100644 (file)
@@ -9,7 +9,7 @@
 #include "test_hlp.hpp"
 
 
-const int  action_items = 40;
+const int  action_items = 44;
 
 TEST(subsession_add_remove_test, FailAtAddRemoveUser) {
        using ud_t = ud_data_t<std::array<api_call_res_t, action_items>>;
@@ -244,6 +244,31 @@ TEST(subsession_add_remove_test, FailAtAddRemoveUser) {
                                                        .cb_expected = SUBSESSION_ERROR_NONE,
                                                        .cb_desc = "Check if remove " + std::string(TestUserStr::user_5) + " callback is successful", },
 
+                       // Trying to add a subsession with a name matching a fixed-size session's image backing file
+                       api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>(TestUserStr::user_7, 25*1024)),
+                                                       .expected = SUBSESSION_ERROR_NONE,
+                                                       .desc = "Check if add " + std::string(TestUserStr::user_7) + " is successful (fixed-size backend)",
+                                                       .cb_expected = SUBSESSION_ERROR_NONE,
+                                                       .cb_desc = "Check if add " + std::string(TestUserStr::user_7) + " callback is successful", },
+
+                       api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>(TestUserStr::user_7_img, 25*1024)),
+                                                       .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+                                                       .desc = "Check if add " + std::string(TestUserStr::user_7_img) + " (fixed-size backend) returns ERROR_INVALID_PARAMETER",
+                                                       .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+                                                       .cb_desc = "Check if add " + std::string(TestUserStr::user_7_img) + " (fixed-size backend) callback returns error", },
+
+                       api_call_res_t{ .call_result = std::move(subsession_add_user_l<subsession_5001>(TestUserStr::user_7_img)),
+                                                       .expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+                                                       .desc = "Check if add " + std::string(TestUserStr::user_7_img) + " (regular-dir backend) returns ERROR_INVALID_PARAMETER",
+                                                       .cb_expected = SUBSESSION_ERROR_INVALID_PARAMETER,
+                                                       .cb_desc = "Check if add " + std::string(TestUserStr::user_7_img) + " (regular-dir backend) callback returns error", },
+
+                       api_call_res_t{ .call_result = std::move(subsession_remove_user_l<subsession_5001>(TestUserStr::user_7)),
+                                                       .expected = SUBSESSION_ERROR_NONE,
+                                                       .desc = "Check if remove " + std::string(TestUserStr::user_7) + " is successful",
+                                                       .cb_expected = SUBSESSION_ERROR_NONE,
+                                                       .cb_desc = "Check if remove " + std::string(TestUserStr::user_7) + " callback is successful", },
+
                        // Trying to add fixed-size subsession with insufficient size for overhead
 
                        api_call_res_t{ .call_result = std::move(subsession_add_user_fixed_size_l<subsession_5001>( TestUserStr::user_6, 0)),
index 0d945992962d759ca1974e7b9a2d89f39ba27b4a..bd714f372797aad31e751558061f0cd47d49d2f8 100644 (file)
@@ -31,6 +31,8 @@ namespace TestUserStr {
        [[maybe_unused]]  static subsession_user_t user_4 = "user_4";
        [[maybe_unused]]  static subsession_user_t user_5 = "user_5";
        [[maybe_unused]]  static subsession_user_t user_6 = "user_6";
+       [[maybe_unused]]  static subsession_user_t user_7 = "user_7";
+       [[maybe_unused]]  static subsession_user_t user_7_img = ".img.user_7";
        [[maybe_unused]]  static subsession_user_t user_19 = "user__length__is_19";
 };