diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/ckutil.c | 13 | ||||
-rw-r--r-- | src/ckutil.h | 2 | ||||
-rw-r--r-- | src/dblayer.c | 12 |
3 files changed, 27 insertions, 0 deletions
diff --git a/src/ckutil.c b/src/ckutil.c index f292e8e..06d12da 100644 --- a/src/ckutil.c +++ b/src/ckutil.c @@ -180,3 +180,16 @@ int util_own_grp_copy(const char *dest, const char *original) { } return 0; } + +int util_is_link_owned_by_root(const char *link) { + if (!link) { + return 0; + } + struct stat buf; + if (!lstat(link, &buf)) { + if (buf.st_uid == (uid_t)0) { + return 1; + } + } + return 0; +} diff --git a/src/ckutil.h b/src/ckutil.h index d653116..9f3cb39 100644 --- a/src/ckutil.h +++ b/src/ckutil.h @@ -93,4 +93,6 @@ extern int util_symlink_file(const char *path, const char* dest); /* Chnage owner and group of `new` and make it like `old`*/ extern int util_own_grp_copy(const char *new, const char* old); + +extern int util_is_link_owned_by_root(const char *link); #endif // CKUTIL_H diff --git a/src/dblayer.c b/src/dblayer.c index 33e1682..f517dbe 100644 --- a/src/dblayer.c +++ b/src/dblayer.c @@ -526,6 +526,10 @@ int get_program_paths(DB *db, cklist *ckl, const char* pName, int bname, int att if (sqlite3_column_int(stmt, 2)) { strcat(entry, " [p]"); } + /* root */ + if (util_is_link_owned_by_root((char *)sqlite3_column_text(stmt, 0))) { + strcat(entry, " [root]"); + } } list_add(ckl, entry); free(tmp); @@ -560,6 +564,10 @@ int list_get_paths(DB *db, cklist *ckl, int attr) { if (sqlite3_column_int(stmt, 2)) { strcat(path, " [p]"); } + /* root */ + if (util_is_link_owned_by_root((char *)sqlite3_column_text(stmt, 0))) { + strcat(path, " [root]"); + } } list_add(ckl, path); } @@ -640,6 +648,10 @@ int list_get_path_program_tree(DB *db, cklist *ckl, int attr) { if (sqlite3_column_int(stmt2, 2)) { strcat(treePath, " [p]"); } + /* root */ + if (util_is_link_owned_by_root((char *)sqlite3_column_text(stmt2, 0))) { + strcat(treePath, " [root]"); + } } list_add(ckl, treePath); } |