diff --git a/src/loader/utils/helpers.c b/src/loader/utils/helpers.c index f4d4963..d8d95bd 100644 --- a/src/loader/utils/helpers.c +++ b/src/loader/utils/helpers.c @@ -48,7 +48,11 @@ ip_range_t ParseIpCidr(const char *ip) ip_range_t ret = {0}; ret.cidr = 32; - char *token = strtok((char *) ip, "/"); + char ip_copy[INET_ADDRSTRLEN + 3]; + strncpy(ip_copy, ip, sizeof(ip_copy) - 1); + ip_copy[sizeof(ip_copy) - 1] = '\0'; + + char *token = strtok((char *) ip_copy, "/"); if (token) { @@ -104,4 +108,17 @@ void PrintToolInfo() " /_/\\_\\____/|_| |_| |_|_| \\___| \\_/\\_/ \\__,_|_|_|\n" "\n\n" ); +} + +/** + * Retrieves nanoseconds since system boot. + * + * @return The current nanoseconds since the system started. + */ +u64 GetBootNanoTime() +{ + struct sysinfo sys; + sysinfo(&sys); + + return sys.uptime * 1e9; } \ No newline at end of file diff --git a/src/loader/utils/helpers.h b/src/loader/utils/helpers.h index 68b67bd..5ee0e4d 100644 --- a/src/loader/utils/helpers.h +++ b/src/loader/utils/helpers.h @@ -7,6 +7,8 @@ #include #include +#include + struct ip_range { u32 ip; @@ -19,4 +21,5 @@ void PrintHelpMenu(); void SignalHndl(int code); ip_range_t ParseIpCidr(const char* ip); const char* GetProtocolStrById(int id); -void PrintToolInfo(); \ No newline at end of file +void PrintToolInfo(); +u64 GetBootNanoTime(); \ No newline at end of file