Fix NSMountLogic in case when user has no running applications 11/164011/2
authorRafal Krypa <r.krypa@samsung.com>
Thu, 14 Dec 2017 15:35:11 +0000 (16:35 +0100)
committerDariusz Michaluk <d.michaluk@samsung.com>
Thu, 21 Dec 2017 13:47:07 +0000 (13:47 +0000)
In some cases directory /run/user/UID/ may exist, but /run/user/UID/apps/
might not. Such case was incorrectly handled in NSMountLogic::readFiles(),
it caused an exception to be thrown.

Fixed implementation first checks whether directory exists before trying
to read it.

Change-Id: Ibae0415eac066672d50cf184d82aa3f53c7efdf0
Signed-off-by: Rafal Krypa <r.krypa@samsung.com>
src/common/nsmount-logic.cpp

index aef596b..73a6fe3 100644 (file)
@@ -67,10 +67,10 @@ void NSMountLogic::readFiles(void)
     users.erase(last, users.end());
 
     for (auto &user : users) {
-        auto apps = FS::getFilesFromDirectory(MountNS::getUserAppsMountPointsPath(toNumber(user)));
-        for (auto &app : apps) {
-            m_entryVector.emplace_back(toNumber(user), app);
-        }
+        std::string dir = MountNS::getUserAppsMountPointsPath(toNumber(user));
+        if (FS::directoryStatus(dir) > 0)
+            for (auto &app : FS::getFilesFromDirectory(dir))
+                m_entryVector.emplace_back(toNumber(user), app);
     }
 }