Fix override warning and fix buffer overflow check

This commit is contained in:
2017-04-14 01:05:18 -05:00
parent bf110e5341
commit b7775d3d82
2 changed files with 16 additions and 18 deletions
+8 -10
View File
@@ -197,8 +197,8 @@ class FileStore {
* @return 0 if read is a success
*/
int read(InodeId_t id, typename Header::FsSize_t readStart,
typename Header::FsSize_t readSize, void *data,
typename Header::FsSize_t *size);
typename Header::FsSize_t readSize, void *data,
typename Header::FsSize_t *size);
/**
* Reads the stat information of the inode of the given inode id.
@@ -265,8 +265,8 @@ class FileStore {
* @return 0 if read is a success
*/
int read(Inode *inode, typename Header::FsSize_t readStart,
typename Header::FsSize_t readSize, void *data,
typename Header::FsSize_t *size);
typename Header::FsSize_t readSize, void *data,
typename Header::FsSize_t *size);
/**
* Removes the inode of the given ID.
@@ -579,17 +579,15 @@ int FileStore<Header>::read(InodeId_t id, typename Header::FsSize_t readStart,
template<typename Header>
int FileStore<Header>::read(Inode *inode, typename Header::FsSize_t readStart,
typename Header::FsSize_t readSize, void *data, typename Header::FsSize_t *size) {
int retval = 1;
// be sure read size is not greater than what is available to read
if (inode->getDataLen() + readStart < readSize) {
readSize = inode->getDataLen();
if (inode->getDataLen() - readStart < readSize) {
readSize = inode->getDataLen() - readStart;
}
if (size) {
*size = readSize;
}
ox_memcpy(data, inode->getData() + readStart, inode->getDataLen());
retval = 0;
return retval;
ox_memcpy(data, inode->getData() + readStart, readSize);
return 0;
}
template<typename Header>
+8 -8
View File
@@ -34,7 +34,7 @@ class FileSystem {
public:
virtual ~FileSystem() {};
virtual int read(uint64_t inode, void *buffer, size_t *size) = 0;
virtual int read(uint64_t inode, void *buffer, size_t size) = 0;
virtual int read(uint64_t inode, size_t readStart, size_t readSize, void *buffer, size_t *size) = 0;
@@ -112,9 +112,9 @@ class FileSystemTemplate: public FileSystem {
int read(const char *path, void *buffer);
int read(uint64_t inode, void *buffer, size_t *size) override;
int read(uint64_t inode, void *buffer, size_t buffSize) override;
int read(uint64_t inode, size_t readStart, size_t readSize, void *buffer, size_t *size);
int read(uint64_t inode, size_t readStart, size_t readSize, void *buffer, size_t *size) override;
uint8_t *read(uint64_t inode, size_t *size) override;
@@ -178,12 +178,12 @@ FileStat FileSystemTemplate<FileStore, FS_TYPE>::stat(uint64_t inode) {
#pragma warning(disable:4244)
#endif
template<typename FileStore, FsType FS_TYPE>
int FileSystemTemplate<FileStore, FS_TYPE>::read(uint64_t inode, void *buffer, size_t *size) {
if (size) {
auto stat = store->stat(inode);
*size = stat.size;
int FileSystemTemplate<FileStore, FS_TYPE>::read(uint64_t inode, void *buffer, size_t buffSize) {
auto stat = store->stat(inode);
if (stat.size <= buffSize) {
return store->read(inode, buffer, nullptr);
}
return store->read(inode, buffer, nullptr);
return 0;
;
}
#ifdef _MSC_VER