Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions src/vma/util/sys_vars.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -276,15 +276,21 @@ int mce_sys_var::hex_to_cpuset(char *start, cpu_set_t *cpu_set)
int mce_sys_var::env_to_cpuset(char *orig_start, cpu_set_t *cpu_set)
{
int ret;
char* start = strdup(orig_start); // save the caller string from strtok destruction.

int len = strlen(orig_start);
if (len == 2 && orig_start[0] == '-' && orig_start[1] == '1') {
CPU_ZERO(cpu_set);
return 0;
}

char *start = strdup(orig_start); // save the caller string from strtok destruction.
/*
* We expect a hex number or comma delimited cpulist. Check for
* starting characters of "0x" or "0X" and if present then parse
* the string as a hexidecimal value, otherwise treat it as a
* cpulist.
*/
if ((strlen(start) > 2) &&
if ((len > 2) &&
(start[0] == '0') &&
((start[1] == 'x') || (start[1] == 'X'))) {
ret = hex_to_cpuset(start + 2, cpu_set);
Expand Down
25 changes: 19 additions & 6 deletions src/vma/util/utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -414,13 +414,26 @@ int priv_read_file(const char *path, char *buf, size_t size, vlog_levels_t log_l

int read_file_to_int(const char *path, int default_value)
{
int value = -1;
std::ifstream file_stream(path);
if (!file_stream || !(file_stream >> value)) {
__log_warn("ERROR while getting int from from file %s, we'll use default %d", path, default_value);
return default_value;
int fd, sz;
char c[21] = {};

fd = open(path, O_RDONLY);
if (fd >= 0) {
sz = read(fd, c, 20);
if (sz > 0) {
int value;
c[sz] = '\0';
int n = sscanf(c, "%d", &value);
if (n == 1) {
close(fd);
return value;
}
}
close(fd);
}
return value;

__log_warn("ERROR while getting int from from file %s, we'll use default %d", path, default_value);
return default_value;
}

int get_ifinfo_from_ip(const struct sockaddr& addr, char* ifname, uint32_t& ifflags)
Expand Down