Skip to content

Commit 2d29444

Browse files
committed
[FEATURE] Added masking values to DWORD
1 parent 39e57be commit 2d29444

File tree

3 files changed

+13
-9
lines changed

3 files changed

+13
-9
lines changed

parser/include/bearparser/AbstractByteBuffer.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,22 @@
66

77
#include <QtCore>
88

9-
#include <iostream>
109
#include <stdlib.h>
11-
1210
//------------------------------------------------
1311

12+
#define MAX_DWORD 0xffffffff
13+
#define MAX_WORD 0xffff
14+
#define MASK_TO_DWORD(val) ((val < MAX_DWORD) ? (val & MAX_DWORD) : MAX_DWORD)
15+
#define MASK_TO_WORD(val) ((val < MAX_WORD) ? (val & MAX_WORD) : MAX_WORD)
16+
1417
typedef uint32_t bufsize_t;
1518
const bufsize_t BUFSIZE_MAX = bufsize_t(-1);
1619

1720
typedef uint64_t offset_t;
1821
const offset_t INVALID_ADDR = offset_t(-1);
1922
const offset_t OFFSET_MAX = (INVALID_ADDR - 1);
2023

24+
2125
class BufferException : public CustomException
2226
{
2327
public:

parser/include/bearparser/pe/PECore.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class PECore
1818

1919
bool wrap(AbstractByteBuffer *v_buf);
2020

21-
virtual offset_t getRawSize() const { return static_cast<offset_t>(buf->getContentSize()); }
21+
virtual offset_t getRawSize() const { return buf ? static_cast<offset_t>(buf->getContentSize()) : 0; }
2222

2323
virtual bufsize_t getAlignment(Executable::addr_type aType) const;
2424
virtual offset_t getImageBase(bool recalculate = false);
@@ -35,11 +35,11 @@ class PECore
3535

3636
void setImageSize(bufsize_t newSize)
3737
{
38-
if (opt32) {
39-
this->opt32->SizeOfImage = newSize;
38+
if (this->opt32) {
39+
this->opt32->SizeOfImage = MASK_TO_DWORD(newSize);
4040
}
41-
else if (opt64) {
42-
this->opt64->SizeOfImage = newSize;
41+
else if (this->opt64) {
42+
this->opt64->SizeOfImage = MASK_TO_DWORD(newSize);
4343
}
4444
}
4545

parser/pe/PEFile.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -558,8 +558,8 @@ SectionHdrWrapper* PEFile::addNewSection(QString name, bufsize_t r_size, bufsize
558558
}
559559
secHdr.PointerToRawData = static_cast<DWORD>(roundedRawEnd);
560560
secHdr.VirtualAddress = static_cast<DWORD>(roundedVirtualEnd);
561-
secHdr.SizeOfRawData = r_size;
562-
secHdr.Misc.VirtualSize = v_size;
561+
secHdr.SizeOfRawData = MASK_TO_DWORD(r_size);
562+
secHdr.Misc.VirtualSize = MASK_TO_DWORD(v_size);
563563

564564
SectionHdrWrapper wr(this, &secHdr);
565565
secHdrWr = dynamic_cast<SectionHdrWrapper*>(sec->addEntry(&wr));

0 commit comments

Comments
 (0)