Q
Size: a a a
Q
VS
struct BmpHeader {
char bitmapSignatureBytes[2];
uint32_t sizeOfBitmapFile;
uint32_t reservedBytes;
uint32_t pixelDataOffset;
};
BmpHeader bpmHeader = {{'B', 'M'}, sizeBitmap, 0, 54};
например. можно ещеBmpHeader bpmHeader = {.bitmapSignatureBytes = {'B', 'M'}, .sizeOfBitmapFile = sizeBitmap, .reservedBytes = 0, pixelDataOffset = 54};
вместо последней строки в моем примереVS
VS
Q
Q
VS
struct BmpHeader {
char bitmapSignatureBytes[2] = {'B', 'M'};
uint32_t sizeOfBitmapFile;
uint32_t reservedBytes = 0;
uint32_t pixelDataOffset = 54;
} bmpHeader = { .sizeOfBitmapFile = sizeBitmap };
VS
Q
S
Q
Q
Q
MA
void saveFile(char *pathToSave, struct1 *s1,
struct2 *s2,
struct3 *s3, char *extraData,
unsigned char *newData)
This frame has 1 object(s):
[32, 40) 'extraData' (line 85) <== Memory access at offset 40 overflows this variable
HINT: this may be a false positive if your program uses some custom stack unwind mechanism, swapcontext or vfork (longjmp and C++ exceptions *are* supported)
SUMMARY: AddressSanitizer: stack-buffer-overflow (/lib/x86_64-linux-gnu/libasan.so.5+0x6a1ac)
VS
struct BmpHeader {
uint32_t sizeOfBitmapFile;
char bitmapSignatureBytes[2] = {'B', 'M'};
uint32_t reservedBytes = 0;
uint32_t pixelDataOffset = 54;
} bmpHeader = { sizeBitmap };
MA
VS
MA
AB
AB