diff --git a/cputree.c b/cputree.c index d09af43..e2541aa 100644 --- a/cputree.c +++ b/cputree.c @@ -361,9 +361,14 @@ static void do_one_cpu(char *path) entry = readdir(dir); if (!entry) break; - if (strstr(entry->d_name, "node")) { - nodeid = strtoul(&entry->d_name[4], NULL, 10); - break; + if (strncmp(entry->d_name, "node", 4) == 0) { + char *end; + int num; + num = strtol(entry->d_name + 4, &end, 10); + if (!*end && num >= 0) { + nodeid = num; + break; + } } } while (entry); closedir(dir); diff --git a/numa.c b/numa.c index cd67ec8..f0b1a98 100644 --- a/numa.c +++ b/numa.c @@ -29,6 +29,7 @@ #include #include #include +#include #include #include @@ -115,7 +116,9 @@ void build_numa_node_list(void) entry = readdir(dir); if (!entry) break; - if ((entry->d_type == DT_DIR) && (strstr(entry->d_name, "node"))) { + if ((entry->d_type == DT_DIR) && + (strncmp(entry->d_name, "node", 4) == 0) && + isdigit(entry->d_name[4])) { add_one_node(entry->d_name); } } while (entry);