Missing Check for lseek Return Value

This commit is contained in:
2025-12-09 21:31:31 +01:00
parent c4cbcb99b5
commit 228d8ecf6c
2 changed files with 12 additions and 6 deletions

View File

@ -47,7 +47,7 @@ private:
inline double calcProgress(); inline double calcProgress();
int iRewindDrive(fileDescriptor file); int iRewindDrive(fileDescriptor file);
unsigned long getDriveSizeInBytes(fileDescriptor file); long getDriveSizeInBytes(fileDescriptor file);
unsigned int uiCalcChecksum(fileDescriptor file, Drive *drive, int *ipSignalFd); unsigned int uiCalcChecksum(fileDescriptor file, Drive *drive, int *ipSignalFd);
void cleanup(); void cleanup();
}; };

View File

@ -239,19 +239,25 @@ int Shred::iRewindDrive(fileDescriptor file)
} }
} }
unsigned long Shred::getDriveSizeInBytes(fileDescriptor file) long Shred::getDriveSizeInBytes(fileDescriptor file)
{ {
unsigned long ulDriveSizeTmp = lseek(file, 0L, SEEK_END); long liDriveSizeTmp = lseek(file, 0L, SEEK_END);
if (liDriveSizeTmp == -1)
{
perror("unable to get drive size");
return 0L;
}
if (0 != iRewindDrive(file)) if (0 != iRewindDrive(file))
{ {
ulDriveSizeTmp = 0U; liDriveSizeTmp = 0L;
} }
#ifdef DEMO_DRIVE_SIZE #ifdef DEMO_DRIVE_SIZE
ulDriveSizeTmp = DEMO_DRIVE_SIZE; liDriveSizeTmp = DEMO_DRIVE_SIZE;
#endif #endif
return ulDriveSizeTmp; return liDriveSizeTmp;
} }
unsigned int Shred::uiCalcChecksum(fileDescriptor file, Drive *drive, int *ipSignalFd) unsigned int Shred::uiCalcChecksum(fileDescriptor file, Drive *drive, int *ipSignalFd)