torcontrol: Check for reading errors in ReadBinaryFile
This ensures that ReadBinaryFile never returns exactly TOR_COOKIE_SIZE bytes if the file was larger than that.
This commit is contained in:
parent
d63677bbb2
commit
0b6f40d4ca
1 changed files with 4 additions and 0 deletions
|
@ -330,6 +330,10 @@ static std::pair<bool,std::string> ReadBinaryFile(const fs::path &filename, size
|
||||||
char buffer[128];
|
char buffer[128];
|
||||||
size_t n;
|
size_t n;
|
||||||
while ((n=fread(buffer, 1, sizeof(buffer), f)) > 0) {
|
while ((n=fread(buffer, 1, sizeof(buffer), f)) > 0) {
|
||||||
|
// Check for reading errors so we don't return any data if we couldn't
|
||||||
|
// read the entire file (or up to maxsize)
|
||||||
|
if (ferror(f))
|
||||||
|
return std::make_pair(false,"");
|
||||||
retval.append(buffer, buffer+n);
|
retval.append(buffer, buffer+n);
|
||||||
if (retval.size() > maxsize)
|
if (retval.size() > maxsize)
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in a new issue