mirror of
https://github.com/yuzu-emu/breakpad.git
synced 2025-01-10 16:55:42 +00:00
Terminating FileID path when at maximum length. (Coverity)
If FileID was constructed with a path that was >= PATH_MAX then path_ was not terminated resulting in a possible buffer overrun when reading. BUG=573 A=cmumford@chromium.org Original code review: https://breakpad.appspot.com/1324002/ R=cmumford@chromium.org Review URL: https://breakpad.appspot.com/1334002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1295 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
482df94a07
commit
ad37f5aabd
|
@ -48,9 +48,7 @@
|
|||
|
||||
namespace google_breakpad {
|
||||
|
||||
FileID::FileID(const char* path) {
|
||||
strncpy(path_, path, sizeof(path_));
|
||||
}
|
||||
FileID::FileID(const char* path) : path_(path) {}
|
||||
|
||||
// ELF note name and desc are 32-bits word padded.
|
||||
#define NOTE_PADDING(a) ((a + 3) & ~3)
|
||||
|
@ -150,7 +148,7 @@ bool FileID::ElfFileIdentifierFromMappedFile(const void* base,
|
|||
}
|
||||
|
||||
bool FileID::ElfFileIdentifier(uint8_t identifier[kMDGUIDSize]) {
|
||||
MemoryMappedFile mapped_file(path_);
|
||||
MemoryMappedFile mapped_file(path_.c_str());
|
||||
if (!mapped_file.data()) // Should probably check if size >= ElfW(Ehdr)?
|
||||
return false;
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#define COMMON_LINUX_FILE_ID_H__
|
||||
|
||||
#include <limits.h>
|
||||
#include <string>
|
||||
|
||||
#include "common/linux/guid_creator.h"
|
||||
|
||||
|
@ -69,7 +70,7 @@ class FileID {
|
|||
|
||||
private:
|
||||
// Storage for the path specified
|
||||
char path_[PATH_MAX];
|
||||
std::string path_;
|
||||
};
|
||||
|
||||
} // namespace google_breakpad
|
||||
|
|
Loading…
Reference in a new issue