diff options
author | Leandro Pereira <leandro@hardinfo.org> | 2016-07-29 22:44:22 -0300 |
---|---|---|
committer | Leandro Pereira <leandro@hardinfo.org> | 2016-07-30 10:19:14 -0300 |
commit | 00951b7535e210bf5b90c53c85d728b074760123 (patch) | |
tree | 54874a9582d0b215f1c579437ff8ee93bc39daf5 /modules/devices | |
parent | e0204714d00fe00ce9fbcd69b67be01af0edfdc9 (diff) |
If reading from /proc/{ioports,iomem,dma} requires root, warn
Diffstat (limited to 'modules/devices')
-rw-r--r-- | modules/devices/resources.c | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/modules/devices/resources.c b/modules/devices/resources.c index 270000dd..15cb8f21 100644 --- a/modules/devices/resources.c +++ b/modules/devices/resources.c @@ -16,9 +16,12 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include <string.h> + #include "devices.h" -gchar *_resources = NULL; +static gchar *_resources = NULL; +static gboolean _require_root = FALSE; #if GLIB_CHECK_VERSION(2,14,0) static GRegex *_regex_pci = NULL, @@ -64,6 +67,7 @@ void scan_device_resources(gboolean reload) FILE *io; gchar buffer[256]; gint i; + gint zero_to_zero_addr = 0; struct { gchar *file; @@ -85,6 +89,9 @@ void scan_device_resources(gboolean reload) gchar **temp = g_strsplit(buffer, ":", 2); gchar *name = _resource_obtain_name(temp[1]); + if (strstr(temp[0], "0000-0000")) + zero_to_zero_addr++; + _resources = h_strdup_cprintf("<tt>%s</tt>=%s\n", _resources, temp[0], name); @@ -95,7 +102,9 @@ void scan_device_resources(gboolean reload) fclose(io); } } - + + _require_root = zero_to_zero_addr > 16; + SCAN_END(); } @@ -103,3 +112,8 @@ gchar *callback_device_resources(void) { return g_strdup(_resources); } + +gboolean root_required_for_resources(void) +{ + return _require_root; +} |