mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
ndb - uint overflow when running on 64-bit platform with more than 4Gb of mem
bug#10711 bug#10058 bug#9363 bug#9025 bug#8918 ndb/src/kernel/blocks/ndbfs/Ndbfs.cpp: Use UintPtr when computing page address to make sure that Uint32 does not overflow
This commit is contained in:
@ -247,10 +247,10 @@ Ndbfs::readWriteRequest(int action, Signal * signal)
|
||||
AsyncFile* openFile = theOpenFiles.find(filePointer);
|
||||
|
||||
const NewVARIABLE *myBaseAddrRef = &getBat(blockNumber)[fsRWReq->varIndex];
|
||||
unsigned int tPageSize;
|
||||
unsigned int tClusterSize;
|
||||
unsigned int tNRR;
|
||||
unsigned int tPageOffset;
|
||||
UintPtr tPageSize;
|
||||
UintPtr tClusterSize;
|
||||
UintPtr tNRR;
|
||||
UintPtr tPageOffset;
|
||||
char* tWA;
|
||||
FsRef::NdbfsErrorCodeType errorCode;
|
||||
|
||||
@ -294,8 +294,8 @@ Ndbfs::readWriteRequest(int action, Signal * signal)
|
||||
jam();
|
||||
for (unsigned int i = 0; i < fsRWReq->numberOfPages; i++) {
|
||||
jam();
|
||||
const Uint32 varIndex = fsRWReq->data.listOfPair[i].varIndex;
|
||||
const Uint32 fileOffset = fsRWReq->data.listOfPair[i].fileOffset;
|
||||
const UintPtr varIndex = fsRWReq->data.listOfPair[i].varIndex;
|
||||
const UintPtr fileOffset = fsRWReq->data.listOfPair[i].fileOffset;
|
||||
if (varIndex >= tNRR) {
|
||||
jam();
|
||||
errorCode = FsRef::fsErrInvalidParameters;
|
||||
@ -316,8 +316,8 @@ Ndbfs::readWriteRequest(int action, Signal * signal)
|
||||
errorCode = FsRef::fsErrInvalidParameters;
|
||||
goto error;
|
||||
}//if
|
||||
const Uint32 varIndex = fsRWReq->data.arrayOfPages.varIndex;
|
||||
const Uint32 fileOffset = fsRWReq->data.arrayOfPages.fileOffset;
|
||||
const UintPtr varIndex = fsRWReq->data.arrayOfPages.varIndex;
|
||||
const UintPtr fileOffset = fsRWReq->data.arrayOfPages.fileOffset;
|
||||
|
||||
request->par.readWrite.pages[0].offset = fileOffset * tPageSize;
|
||||
request->par.readWrite.pages[0].size = tPageSize * fsRWReq->numberOfPages;
|
||||
@ -334,7 +334,7 @@ Ndbfs::readWriteRequest(int action, Signal * signal)
|
||||
|
||||
for (unsigned int i = 0; i < fsRWReq->numberOfPages; i++) {
|
||||
jam();
|
||||
Uint32 varIndex = fsRWReq->data.listOfMemPages.varIndex[i];
|
||||
UintPtr varIndex = fsRWReq->data.listOfMemPages.varIndex[i];
|
||||
|
||||
if (varIndex >= tNRR) {
|
||||
jam();
|
||||
|
Reference in New Issue
Block a user