if (fd < 0) return -1;
len = read(fd, value, size);
close(fd);
/* Ensure value is terminated */ if (len <= 0 || len == size) return -1;
value[len] = '\0';
path = strchr(value, '\n'); if (path)
*path = '\0';
return 0;
}
int read_sysfs_lsms(char *lsms, size_t size)
{
FILE *fp;
size_t red;
fp = fopen("/sys/kernel/security/lsm", "r"); if (fp == NULL) return -1;
red = fread(lsms, 1, size, fp);
fclose(fp);
if (red <= 0 || red == size) return -1;
lsms[red] = '\0'; return 0;
}
int attr_lsm_count(void)
{ char *names = calloc(sysconf(_SC_PAGESIZE), 1); int count = 0;
if (!names) return 0;
if (read_sysfs_lsms(names, sysconf(_SC_PAGESIZE))) return 0;
if (strstr(names, "selinux"))
count++; if (strstr(names, "smack"))
count++; if (strstr(names, "apparmor"))
count++;
return count;
}
Messung V0.5
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.1Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.