From 7c923860821d2f7cdb1a7b3773b8f9c958b4f82c Mon Sep 17 00:00:00 2001 From: localhorst Date: Tue, 9 Dec 2025 21:09:25 +0100 Subject: [PATCH] Using sprintf Instead of snprintf --- include/drive.h | 1 + src/printer.cpp | 18 +++++++++--------- src/reHDD.cpp | 45 +++++++++++++++++++++++---------------------- 3 files changed, 33 insertions(+), 31 deletions(-) diff --git a/include/drive.h b/include/drive.h index 1297e13..eae0643 100644 --- a/include/drive.h +++ b/include/drive.h @@ -47,6 +47,7 @@ public: bool bWasDeleted = false; bool bIsOffline = false; uint32_t u32DriveChecksumAfterShredding = 0U; + uint16_t u16DriveIndex = 0U; // Index of TUI list private: string sPath; diff --git a/src/printer.cpp b/src/printer.cpp index 0e8c60f..a0313ef 100644 --- a/src/printer.cpp +++ b/src/printer.cpp @@ -42,17 +42,17 @@ void Printer::print(Drive *drive) t_msgQueueData msgQueueData; msgQueueData.msg_queue_type = 1; - sprintf(msgQueueData.driveData.caDriveIndex, "%i", 42); // TODO: get from tui - sprintf(msgQueueData.driveData.caDriveState, "shredded"); + snprintf(msgQueueData.driveData.caDriveIndex, STR_BUFFER_SIZE, "%i", drive->u16DriveIndex); + snprintf(msgQueueData.driveData.caDriveState, STR_BUFFER_SIZE, "shredded"); strcpy(msgQueueData.driveData.caDriveModelFamily, drive->getModelFamily().c_str()); strcpy(msgQueueData.driveData.caDriveModelName, drive->getModelName().c_str()); - sprintf(msgQueueData.driveData.caDriveCapacity, "%li", drive->getCapacity()); + snprintf(msgQueueData.driveData.caDriveCapacity, STR_BUFFER_SIZE, "%li", drive->getCapacity()); strcpy(msgQueueData.driveData.caDriveSerialnumber, drive->getSerial().c_str()); - sprintf(msgQueueData.driveData.caDriveHours, "%i", drive->getPowerOnHours()); - sprintf(msgQueueData.driveData.caDriveCycles, "%i", drive->getPowerCycles()); - sprintf(msgQueueData.driveData.caDriveErrors, "%i", drive->getErrorCount()); - sprintf(msgQueueData.driveData.caDriveShredTimestamp, "%li", drive->getActionStartTimestamp()); - sprintf(msgQueueData.driveData.caDriveShredDuration, "%li", drive->getTaskDuration()); + snprintf(msgQueueData.driveData.caDriveHours, STR_BUFFER_SIZE, "%i", drive->getPowerOnHours()); + snprintf(msgQueueData.driveData.caDriveCycles, STR_BUFFER_SIZE, "%i", drive->getPowerCycles()); + snprintf(msgQueueData.driveData.caDriveErrors, STR_BUFFER_SIZE, "%i", drive->getErrorCount()); + snprintf(msgQueueData.driveData.caDriveShredTimestamp, STR_BUFFER_SIZE, "%li", drive->getActionStartTimestamp()); + snprintf(msgQueueData.driveData.caDriveShredDuration, STR_BUFFER_SIZE, "%li", drive->getTaskDuration()); switch (drive->connectionType) { @@ -70,7 +70,7 @@ void Printer::print(Drive *drive) strcpy(msgQueueData.driveData.caDriveConnectionType, "na"); } - sprintf(msgQueueData.driveData.caDriveReHddVersion, REHDD_VERSION); + snprintf(msgQueueData.driveData.caDriveReHddVersion, STR_BUFFER_SIZE, "%s", REHDD_VERSION); if (-1 == msgsnd(this->msqid, &msgQueueData, sizeof(t_msgQueueData) - sizeof(long), 0)) { diff --git a/src/reHDD.cpp b/src/reHDD.cpp index defcb5a..fbfb119 100644 --- a/src/reHDD.cpp +++ b/src/reHDD.cpp @@ -19,7 +19,7 @@ static list listDrives; // stores all drive data from scan thread TUI *ui; -static uint8_t u8SelectedEntry; +static uint16_t u16SelectedEntry; static fd_set selectSet; @@ -30,7 +30,7 @@ static fd_set selectSet; */ reHDD::reHDD(void) { - u8SelectedEntry = 0U; + u16SelectedEntry = 0U; } /** @@ -83,7 +83,7 @@ void reHDD::app_logic(void) Logger::logThis()->info("got progress signal from a shred task"); #endif } - ui->updateTUI(&listDrives, u8SelectedEntry); + ui->updateTUI(&listDrives, u16SelectedEntry); } // endless loop thDevices.join(); thUserInput.join(); @@ -92,10 +92,11 @@ void reHDD::app_logic(void) Drive *reHDD::getSelectedDrive() { - if (u8SelectedEntry < listDrives.size()) + if (u16SelectedEntry < listDrives.size()) { list::iterator it = listDrives.begin(); - advance(it, u8SelectedEntry); + advance(it, u16SelectedEntry); + it->u16DriveIndex = u16SelectedEntry; return &(*it); } else @@ -150,12 +151,12 @@ void reHDD::ThreadUserInput() case TUI::UserInput::DownKey: // cout << "Down" << endl; handleArrowKey(TUI::UserInput::DownKey); - ui->updateTUI(&listDrives, u8SelectedEntry); + ui->updateTUI(&listDrives, u16SelectedEntry); break; case TUI::UserInput::UpKey: // cout << "Up" << endl; handleArrowKey(TUI::UserInput::UpKey); - ui->updateTUI(&listDrives, u8SelectedEntry); + ui->updateTUI(&listDrives, u16SelectedEntry); break; case TUI::UserInput::Undefined: // cout << "Undefined" << endl; @@ -163,7 +164,7 @@ void reHDD::ThreadUserInput() case TUI::UserInput::Abort: // cout << "Abort" << endl; handleAbort(); - ui->updateTUI(&listDrives, u8SelectedEntry); + ui->updateTUI(&listDrives, u16SelectedEntry); break; case TUI::UserInput::Delete: // cout << "Delete" << endl; @@ -176,7 +177,7 @@ void reHDD::ThreadUserInput() } } - ui->updateTUI(&listDrives, u8SelectedEntry); + ui->updateTUI(&listDrives, u16SelectedEntry); break; case TUI::UserInput::Shred: // cout << "Shred" << endl; @@ -187,22 +188,22 @@ void reHDD::ThreadUserInput() tmpSelectedDrive->state = Drive::SHRED_SELECTED; } } - ui->updateTUI(&listDrives, u8SelectedEntry); + ui->updateTUI(&listDrives, u16SelectedEntry); break; case TUI::UserInput::ShredAll: // cout << "ShredAll" << endl; startShredAllDrives(&listDrives); - ui->updateTUI(&listDrives, u8SelectedEntry); + ui->updateTUI(&listDrives, u16SelectedEntry); break; case TUI::UserInput::Enter: // cout << "Enter" << endl; handleEnter(); - ui->updateTUI(&listDrives, u8SelectedEntry); + ui->updateTUI(&listDrives, u16SelectedEntry); break; case TUI::UserInput::ESC: // cout << "ESC" << endl; handleESC(); - ui->updateTUI(&listDrives, u8SelectedEntry); + ui->updateTUI(&listDrives, u16SelectedEntry); break; case TUI::UserInput::Terminate: // cout << "Terminate" << endl; @@ -225,7 +226,7 @@ void reHDD::ThreadShred(Drive *const pDrive) Shred *pShredTask = new Shred(); // create new shred task pShredTask->shredDrive(pDrive, &fdShredInformPipe[1]); // start new shred task delete pShredTask; // delete shred task - ui->updateTUI(&listDrives, u8SelectedEntry); + ui->updateTUI(&listDrives, u16SelectedEntry); } } @@ -239,7 +240,7 @@ void reHDD::ThreadDelete() tmpSelectedDrive->state = Drive::TaskState::NONE; // delete finished tmpSelectedDrive->bWasDeleted = true; Logger::logThis()->info("Finished delete for: " + tmpSelectedDrive->getModelName() + "-" + tmpSelectedDrive->getSerial()); - ui->updateTUI(&listDrives, u8SelectedEntry); + ui->updateTUI(&listDrives, u16SelectedEntry); } } @@ -599,24 +600,24 @@ void reHDD::handleArrowKey(TUI::UserInput userInput) switch (userInput) { case TUI::UserInput::DownKey: - u8SelectedEntry++; - if (u8SelectedEntry >= u8EntrySize) + u16SelectedEntry++; + if (u16SelectedEntry >= u8EntrySize) { - u8SelectedEntry = 0; + u16SelectedEntry = 0; } break; case TUI::UserInput::UpKey: - if (u8SelectedEntry == 0) + if (u16SelectedEntry == 0) { - u8SelectedEntry = (u8EntrySize - 1); + u16SelectedEntry = (u8EntrySize - 1); } else { - u8SelectedEntry--; + u16SelectedEntry--; } break; default: - u8SelectedEntry = 0; + u16SelectedEntry = 0; break; }