Open Kafow opened 1 year ago
Hi @Kafow! That is indeed correct and something we wish to clean up. It hasn't been an issue for us so far because most of our use-cases for dissect.target
are fairly short-lived programs, so dangling file handles weren't an issue (they'd be cleaned up as the program exits).
If you could create a PR with a start for fixing this, that'd be appreciated!
Hey, When opening a target there is no option to close its resources that have opened on the filesystem. For example, consider opening A qcow2 target:
In order to open a qcow2 target we will initialize qcow2container https://github.com/fox-it/dissect.target/blob/d1fcfe4428136c9c08f5104eb79e9df57341c632/dissect/target/containers/qcow2.py#L10-L17 As you can see we are opening a file handle to the path specified: https://github.com/fox-it/dissect.target/blob/d1fcfe4428136c9c08f5104eb79e9df57341c632/dissect/target/containers/qcow2.py#L14
However, consider we wanna free that target, we will try to call something like
But as it seems, the close function is not implemented in most of the containers, for example Qcow2Container: https://github.com/fox-it/dissect.target/blob/d1fcfe4428136c9c08f5104eb79e9df57341c632/dissect/target/containers/qcow2.py#L39-L40 So the only way to close a file handle right now is to do some workaround like this (considering you have different types of disks):
Instead of just doing a way cleaner code like:
I might try and do a PR later fixing this issue. Thanks, Ofek