From 4d192e629a07ae457134cb0063e0136e54b01008 Mon Sep 17 00:00:00 2001 From: Amlal El Mahrouss Date: Tue, 9 Dec 2025 02:50:07 +0100 Subject: chore: Codebase improvements and tweaks. Signed-off-by: Amlal El Mahrouss --- tools/chk.hefs.cc | 3 ++- tools/mkfs.hefs.cc | 21 +++++++++++++++------ 2 files changed, 17 insertions(+), 7 deletions(-) (limited to 'tools') diff --git a/tools/chk.hefs.cc b/tools/chk.hefs.cc index c1c58c6e..a47e4fc6 100644 --- a/tools/chk.hefs.cc +++ b/tools/chk.hefs.cc @@ -59,7 +59,8 @@ int main(int argc, char** argv) { if (strncmp(boot_node.magic, kOpenHeFSMagic, kOpenHeFSMagicLen) != 0 || boot_node.sectorCount < 1 || boot_node.sectorSize < kMkFsSectorSz) { - mkfs::console_out() << "hefs: error: Device does not contain an OpenHeFS disk: " << opt_disk << "\n"; + mkfs::console_out() << "hefs: error: Device does not contain an OpenHeFS disk: " << opt_disk + << "\n"; return EXIT_FAILURE; } diff --git a/tools/mkfs.hefs.cc b/tools/mkfs.hefs.cc index 7016bf18..4be6ed04 100644 --- a/tools/mkfs.hefs.cc +++ b/tools/mkfs.hefs.cc @@ -12,12 +12,12 @@ #include #include -static uint16_t kVersion = kOpenHeFSVersion; -static uint16_t kNumericalBase = 10; +static std::uint16_t kVersion = kOpenHeFSVersion; +static std::uint16_t kNumericalBase = 10; -static size_t kDiskSize = mkfs::detail::gib_cast(4UL); +static std::size_t kDiskSize = mkfs::detail::gib_cast(4UL); static std::u8string kDiskLabel; -static size_t kDiskSectorSz = 512; +static std::size_t kDiskSectorSz = 512; int main(int argc, char** argv) { if (argc != 10) { @@ -32,6 +32,7 @@ int main(int argc, char** argv) { std::string args = mkfs::detail::build_args(argc, argv); auto output_path = mkfs::get_option(args, "o"); + if (output_path.empty()) { mkfs::console_out() << "hefs: error: Missing -o argument.\n"; return EXIT_FAILURE; @@ -39,6 +40,7 @@ int main(int argc, char** argv) { auto opt_s = mkfs::get_option(args, "s"); long parsed_s = 0; + if (!mkfs::detail::parse_signed(opt_s, parsed_s, kNumericalBase) || parsed_s == 0) { mkfs::console_out() << "hefs: error: Invalid sector size \"" << opt_s << "\". Must be a positive integer.\n"; @@ -50,9 +52,11 @@ int main(int argc, char** argv) { << "\" is not a power of two.\n"; return EXIT_FAILURE; } + kDiskSectorSz = static_cast(parsed_s); auto opt_L = mkfs::get_option(args, "L"); + if (!opt_L.empty()) { kDiskLabel.clear(); for (char c : opt_L) kDiskLabel.push_back(static_cast(c)); @@ -65,16 +69,19 @@ int main(int argc, char** argv) { auto opt_S = mkfs::get_option(args, "S"); unsigned long long gb = 0; + if (!mkfs::detail::parse_decimal(opt_S, gb) || gb == 0ULL) { mkfs::console_out() << "hefs: error: Invalid disk size \"" << opt_S << "\". Must be a positive integer.\n"; return EXIT_FAILURE; } unsigned long long max_gb = std::numeric_limits::max() / (1024ULL * 1024ULL * 1024ULL); + if (gb > max_gb) { mkfs::console_out() << "hefs: error: Disk size \"" << gb << "GB\" is too large.\n"; return EXIT_FAILURE; } + kDiskSize = static_cast(gb * 1024ULL * 1024ULL * 1024ULL); auto opt_b = mkfs::get_option(args, "b"); @@ -178,19 +185,21 @@ int main(int argc, char** argv) { } output_device.write(reinterpret_cast(&boot_node), sizeof(boot_node)); + if (!output_device.good()) { mkfs::console_out() << "hefs: error: Unable to write BootNode to output device: " << output_path << "\n"; return EXIT_FAILURE; } - output_device.seekp(static_cast(boot_node.startIND)); + output_device.seekp(static_cast(kDiskSize - 1)); + if (!output_device.good()) { mkfs::console_out() << "hefs: error: Failed seek to startIND.\n"; return EXIT_FAILURE; } - output_device.seekp(static_cast(kDiskSize - 1)); + output_device.put(0); output_device.flush(); -- cgit v1.2.3