Add descriptor check before creating 29/115229/3
authorsangwan.kwon <sangwan.kwon@samsung.com>
Fri, 17 Feb 2017 03:54:52 +0000 (12:54 +0900)
committerSungbae Yoo <sungbae.yoo@samsung.com>
Mon, 20 Feb 2017 06:36:48 +0000 (22:36 -0800)
Descriptor can be leaked when (open | create) called continuously.

Change-Id: If5be52386ab189ce16cfcfebbdd0d0fbeb49207f
Signed-off-by: sangwan.kwon <sangwan.kwon@samsung.com>
src/filesystem.cpp

index 97821442c22fddacdac84be82bed9d161136b968..e8bfbbe43cad473d9df14f12d00bedf7942d074d 100644 (file)
@@ -180,6 +180,10 @@ size_t File::size() const
 
 void File::create(mode_t mode)
 {
+       if (descriptor != -1) {
+               close();
+       }
+
        while (1) {
                descriptor = ::creat(path.c_str(), mode);
                if (descriptor == -1) {
@@ -194,6 +198,10 @@ void File::create(mode_t mode)
 
 void File::open(int flags)
 {
+       if (descriptor != -1) {
+               close();
+       }
+
        while (1) {
                descriptor = ::open(path.c_str(), flags);
                if (descriptor == -1) {