encfs/encfs
Jakob Unterwurzacher 9ed8d704dd eraseNode: erase the right FileNode
When a file is opened twice concurrently, we can end up with
two separate FileNodes for a single path.

This seems to be the root cause for the crashes reported under
https://github.com/vgough/encfs/issues/214 , as commit

  af64702dd0
  "Simplify FileNode Cache. Remove the need for PlaceHolder."

removed the awareness for different FileNodes.

The crashes have been fixed by

  e2f0f8e3c6
  "fuseFhMap: translate FUSE file handles to FileNode pointers"

at the cost of introducing a memory leak. One of the two FileNodes
would stay in fuseFhMap forever.

This commit makes eraseNode again aware of different FileNodes for
a single path, makes sure the right FileNode is erased, and fixes
the memory leak.
2017-07-25 09:53:02 +02:00
..
autosprintf.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
autosprintf.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
base64.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
base64.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
BlockFileIO.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
BlockFileIO.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
BlockNameIO.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
BlockNameIO.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
Cipher.cpp fix memory leak in encfsctl showKey command 2016-09-08 09:48:42 +02:00
Cipher.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
CipherFileIO.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
CipherFileIO.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
CipherKey.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
CipherKey.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
ConfigReader.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
ConfigReader.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
ConfigVar.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
ConfigVar.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
Context.cpp eraseNode: erase the right FileNode 2017-07-25 09:53:02 +02:00
Context.h eraseNode: erase the right FileNode 2017-07-25 09:53:02 +02:00
DirNode.cpp fuseFhMap: translate FUSE file handles to FileNode pointers 2017-07-24 22:41:35 +02:00
DirNode.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
encfs.cpp fuseFhMap: translate FUSE file handles to FileNode pointers 2017-07-24 22:41:35 +02:00
encfs.h replace getdir with readdir 2016-04-30 23:10:45 -07:00
encfs.pod Add option 't' to set syslog tag 2017-04-02 23:52:29 +02:00
encfsctl.cpp Use INITIALIZE_EASYLOGGINGPP in Error.cpp 2017-04-23 14:21:36 +02:00
encfsctl.pod Miscellaneous small man page fixes (mostly typos) 2016-10-20 17:24:59 +02:00
encfssh Fix up encfssh (#258) 2017-03-16 22:21:02 +01:00
Error.cpp Use INITIALIZE_EASYLOGGINGPP in Error.cpp 2017-04-23 14:21:36 +02:00
Error.h Remove timestamp from loglines 2017-04-02 23:52:29 +02:00
FileIO.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
FileIO.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
FileNode.cpp fuseFhMap: translate FUSE file handles to FileNode pointers 2017-07-24 22:41:35 +02:00
FileNode.h fuseFhMap: translate FUSE file handles to FileNode pointers 2017-07-24 22:41:35 +02:00
FileUtils.cpp writeV6Config: cast booleans to int 2017-07-19 22:57:35 +02:00
FileUtils.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
FSConfig.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
i18n.h reformat using clang 2014-10-18 19:19:33 -07:00
Interface.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
Interface.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
MACFileIO.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
MACFileIO.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
main.cpp Improve auto unmount 2017-06-10 18:51:15 +02:00
makeKey.cpp Use INITIALIZE_EASYLOGGINGPP in Error.cpp 2017-04-23 14:21:36 +02:00
MemoryPool.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
MemoryPool.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
Mutex.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
NameIO.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
NameIO.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
NullCipher.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
NullCipher.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
NullNameIO.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
NullNameIO.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
openssl.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
openssl.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
Range.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
RawFileIO.cpp run clang-format 2016-09-08 20:27:04 +02:00
RawFileIO.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
readpassphrase.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
readpassphrase.h run clang-format 2015-06-17 21:16:50 -07:00
SSL_Cipher.cpp remove usage of deprecated RAND_pseudo_bytes 2016-10-26 12:33:36 -05:00
SSL_Cipher.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
SSL_Compat.h create OpenSSL < 1.1 compat header 2016-10-16 08:37:22 -05:00
StreamNameIO.cpp replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
StreamNameIO.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00
test.cpp Use INITIALIZE_EASYLOGGINGPP in Error.cpp 2017-04-23 14:21:36 +02:00
testextpass Import version 1.4.0 2008-01-07 08:09:04 +00:00
XmlReader.cpp Read config into memory and pass its content to tinyxml2 (#253) 2017-05-28 16:24:35 +02:00
XmlReader.h replace rlog with easylogging++ 2016-04-24 23:15:43 -07:00