Visitar URL original
Memory (Linux): uses `strtoull` to avoid overflow in 32-bit systems · fastfetch-cli/fastfetch@bc1f240 · GitHub
Skip to content

Commit bc1f240

Browse files
committed
Memory (Linux): uses strtoull to avoid overflow in 32-bit systems
1 parent 3e15a25 commit bc1f240

1 file changed

Lines changed: 9 additions & 9 deletions

File tree

‎src/detection/memory/memory_linux.c‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,34 +19,34 @@ const char* ffDetectMemory(FFMemoryResult* ram) {
1919

2020
char* token = NULL;
2121
if ((token = memmem(buf, (size_t) nRead, "MemTotal:", strlen("MemTotal:"))) != NULL) {
22-
memTotal = strtoul(token + strlen("MemTotal:"), NULL, 10);
22+
memTotal = (uint64_t) strtoull(token + strlen("MemTotal:"), NULL, 10);
2323
} else {
2424
return "MemTotal not found in /proc/meminfo";
2525
}
2626

2727
if ((token = memmem(buf, (size_t) nRead, "MemAvailable:", strlen("MemAvailable:"))) != NULL) {
28-
memAvailable = strtoul(token + strlen("MemAvailable:"), NULL, 10);
28+
memAvailable = (uint64_t) strtoull(token + strlen("MemAvailable:"), NULL, 10);
2929
}
3030

3131
if (memAvailable == 0 || memAvailable >= memTotal) { // MemAvailable can be unreasonable. #1988
3232
if ((token = memmem(buf, (size_t) nRead, "MemFree:", strlen("MemFree:"))) != NULL) {
33-
memFree = strtoul(token + strlen("MemFree:"), NULL, 10);
33+
memFree = (uint64_t) strtoull(token + strlen("MemFree:"), NULL, 10);
3434
}
3535

3636
if ((token = memmem(buf, (size_t) nRead, "Buffers:", strlen("Buffers:"))) != NULL) {
37-
buffers = strtoul(token + strlen("Buffers:"), NULL, 10);
37+
buffers = (uint64_t) strtoull(token + strlen("Buffers:"), NULL, 10);
3838
}
3939

4040
if ((token = memmem(buf, (size_t) nRead, "Cached:", strlen("Cached:"))) != NULL) {
41-
cached = strtoul(token + strlen("Cached:"), NULL, 10);
41+
cached = (uint64_t) strtoull(token + strlen("Cached:"), NULL, 10);
4242
}
4343

4444
if ((token = memmem(buf, (size_t) nRead, "Shmem:", strlen("Shmem:"))) != NULL) {
45-
shmem = strtoul(token + strlen("Shmem:"), NULL, 10);
45+
shmem = (uint64_t) strtoull(token + strlen("Shmem:"), NULL, 10);
4646
}
4747

4848
if ((token = memmem(buf, (size_t) nRead, "SReclaimable:", strlen("SReclaimable:"))) != NULL) {
49-
sReclaimable = strtoul(token + strlen("SReclaimable:"), NULL, 10);
49+
sReclaimable = (uint64_t) strtoull(token + strlen("SReclaimable:"), NULL, 10);
5050
}
5151

5252
memAvailable = memFree + buffers + cached + sReclaimable - shmem;
@@ -79,11 +79,11 @@ const char* ffDetectMemory(FFMemoryResult* ram) {
7979
assert(nRead > 0);
8080

8181
if ((token = memmem(p, (size_t) nRead, "\nsize ", strlen("\nsize "))) != NULL) {
82-
arcSize = strtoul(token + 1 + dataOffset, NULL, 10);
82+
arcSize = (uint64_t) strtoull(token + 1 + dataOffset, NULL, 10);
8383
if (arcSize > 0) {
8484
uint64_t arcMin = 0;
8585
if ((token = memmem(p, (size_t) nRead, "\nc_min ", strlen("\nc_min "))) != NULL) {
86-
arcMin = strtoul(token + 1 + dataOffset, NULL, 10);
86+
arcMin = (uint64_t) strtoull(token + 1 + dataOffset, NULL, 10);
8787
if (arcSize > arcMin) {
8888
arcSize -= arcMin;
8989
if (ram->bytesUsed > arcSize) {

0 commit comments

Comments
 (0)