Android-cuttlefish cvd tool
Public Member Functions | Private Member Functions | Private Attributes | List of all members
cuttlefish::ChrootReadWriteFilesystem Class Reference

#include <chroot.h>

Inheritance diagram for cuttlefish::ChrootReadWriteFilesystem:
Inheritance graph
[legend]
Collaboration diagram for cuttlefish::ChrootReadWriteFilesystem:
Collaboration graph
[legend]

Public Member Functions

 ChrootReadWriteFilesystem (ReadWriteFilesystem &real_filesystem, std::string_view path_prefix)
 
Result< std::unique_ptr< ReaderSeeker > > OpenReadOnly (std::string_view path) override
 
Result< uint32_t > FileAttributes (std::string_view path) const override
 
Result< std::unique_ptr< ReaderWriterSeeker > > CreateFile (std::string_view path) override
 
Result< void > DeleteFile (std::string_view path) override
 
Result< std::unique_ptr< ReaderWriterSeeker > > OpenReadWrite (std::string_view path) override
 
virtual Result< std::unique_ptr< ReaderWriterSeeker > > CreateFile (std::string_view path)=0
 
virtual Result< void > DeleteFile (std::string_view path)=0
 
virtual Result< std::unique_ptr< ReaderWriterSeeker > > OpenReadWrite (std::string_view path)=0
 
- Public Member Functions inherited from cuttlefish::ReadFilesystem
virtual ~ReadFilesystem ()=default
 
virtual Result< std::unique_ptr< ReaderSeeker > > OpenReadOnly (std::string_view path)=0
 
virtual Result< uint32_t > FileAttributes (std::string_view path) const =0
 

Private Member Functions

Result< std::string > ChrootToRealPath (std::string_view) const
 

Private Attributes

ReadWriteFilesystemreal_filesystem_
 
std::string path_prefix_
 

Detailed Description

Wraps access to another ReadWriteFilesystem with an imposed path prefix.

Attempts to normalize file paths to avoid escaping by using absolute paths or ".." members, but is not safe against symlinks or bind mounts.

This is comparable to the fakechroot tool.

Constructor & Destructor Documentation

◆ ChrootReadWriteFilesystem()

cuttlefish::ChrootReadWriteFilesystem::ChrootReadWriteFilesystem ( ReadWriteFilesystem real_filesystem,
std::string_view  path_prefix 
)

Member Function Documentation

◆ ChrootToRealPath()

Result< std::string > cuttlefish::ChrootReadWriteFilesystem::ChrootToRealPath ( std::string_view  path) const
private

◆ CreateFile()

Result< std::unique_ptr< ReaderWriterSeeker > > cuttlefish::ChrootReadWriteFilesystem::CreateFile ( std::string_view  path)
overridevirtual

◆ DeleteFile()

Result< void > cuttlefish::ChrootReadWriteFilesystem::DeleteFile ( std::string_view  path)
overridevirtual

◆ FileAttributes()

Result< uint32_t > cuttlefish::ChrootReadWriteFilesystem::FileAttributes ( std::string_view  path) const
overridevirtual

◆ OpenReadOnly()

Result< std::unique_ptr< ReaderSeeker > > cuttlefish::ChrootReadWriteFilesystem::OpenReadOnly ( std::string_view  path)
overridevirtual

◆ OpenReadWrite()

Result< std::unique_ptr< ReaderWriterSeeker > > cuttlefish::ChrootReadWriteFilesystem::OpenReadWrite ( std::string_view  path)
overridevirtual

Member Data Documentation

◆ path_prefix_

std::string cuttlefish::ChrootReadWriteFilesystem::path_prefix_
private

◆ real_filesystem_

ReadWriteFilesystem* cuttlefish::ChrootReadWriteFilesystem::real_filesystem_
private

The documentation for this class was generated from the following files: