From ce8e849a4632d168e420065445dbdc43df061a8a Mon Sep 17 00:00:00 2001 From: Stephane Desneux Date: Mon, 16 Mar 2015 12:13:51 +0100 Subject: [PATCH] Revert "add tzplatform_has_users_group() api" This reverts commit 7cc9610e72221a634efa565162370c60c828254b. It was a temporary solution. should be superseeded by cynara. Change-Id: If93304d042b087dea02e0129f1f9e82372330834 --- src/Makefile.am | 4 ++-- src/build.sh | 2 +- src/{groups.c => isadmin.c} | 43 ++++++++++++++++++++----------------------- src/{groups.h => isadmin.h} | 22 +++++++++++++--------- src/static-api.c | 9 ++------- src/tzplatform_config.h | 17 ----------------- 6 files changed, 38 insertions(+), 59 deletions(-) rename src/{groups.c => isadmin.c} (69%) rename src/{groups.h => isadmin.h} (67%) diff --git a/src/Makefile.am b/src/Makefile.am index 1329919..932b323 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -31,5 +31,5 @@ dist_pkgdata_DATA = buffer.c \ tzplatform_get.c \ passwd.h \ passwd.c \ - groups.h \ - groups.c + isadmin.h \ + isadmin.c diff --git a/src/build.sh b/src/build.sh index 4b12a2e..8f76b08 100755 --- a/src/build.sh +++ b/src/build.sh @@ -15,7 +15,7 @@ d ./toolbox c > hash.inc d ./toolbox signup > signup.inc d gcc $f -c *.c d ld -shared --version-script=tzplatform_config.sym -o libtzplatform-shared.so buffer.o foreign.o heap.o parser.o scratch.o context.o hashing.o init.o passwd.o shared-api.o -d ar cr libtzplatform-static.a static-api.o groups.o +d ar cr libtzplatform-static.a static-api.o isadmin.o d gcc -o get tzplatform_get.o static-api.o -L. -ltzplatform-static -ltzplatform-shared diff --git a/src/groups.c b/src/isadmin.c similarity index 69% rename from src/groups.c rename to src/isadmin.c index 0e7ec5e..1d1d699 100644 --- a/src/groups.c +++ b/src/isadmin.c @@ -36,43 +36,40 @@ #include #include -#include "groups.h" +#include "isadmin.h" +#include "tzplatform_variables.h" #include "tzplatform_config.h" -int _has_specified_group_static_(uid_t uid, enum tzplatform_variable group) { +int _has_system_group_static_(uid_t uid) { struct passwd *userinfo = NULL; - struct group *groupinfo = NULL; - const char *grpname = NULL; + struct group *systemgroupinfo = NULL; + const char *sysgrpname = NULL; uid_t myuid = 0; - gid_t gid = 0; + gid_t system_gid = 0; gid_t *groups = NULL; int i, nbgroups = 0; - if (group != TZ_SYS_USER_GROUP || group != TZ_SYS_ADMIN_GROUP) { - fprintf( stderr, "groups ERROR: group is not valid \n"); - return -1; - } - + if(uid == -1) /* Get current uid */ myuid = getuid(); else myuid = uid; - /* Get the gid of the group */ - grpname = tzplatform_getname(group); - if(grpname == NULL) { - fprintf( stderr, "groups ERROR: variable TZ_SYS_ADMIN_GROUP is NULL"); + /* Get the gid of the group named "system" */ + sysgrpname = tzplatform_getname(TZ_SYS_ADMIN_GROUP); + if(sysgrpname == NULL) { + fprintf( stderr, "isadmin ERROR: variable TZ_SYS_ADMIN_GROUP is NULL"); return -1; } - groupinfo = getgrnam(grpname); - if(groupinfo == NULL) { - fprintf( stderr, "groups ERROR: cannot find group named \"%s\"\n", grpname); + systemgroupinfo = getgrnam(sysgrpname); + if(systemgroupinfo == NULL) { + fprintf( stderr, "isadmin ERROR: cannot find group named \"%s\"\n", sysgrpname); return -1; } - gid = groupinfo->gr_gid; + system_gid = systemgroupinfo->gr_gid; /* Get all the gid of the given uid */ @@ -81,26 +78,26 @@ int _has_specified_group_static_(uid_t uid, enum tzplatform_variable group) { /* Need to call this function now to get the number of group to make the malloc correctly sized */ if (getgrouplist(userinfo->pw_name, userinfo->pw_gid, groups, &nbgroups) != -1) { - fprintf( stderr, "groups ERROR: cannot get number of groups\n"); + fprintf( stderr, "isadmin ERROR: cannot get number of groups\n"); return -1; } groups = malloc(nbgroups * sizeof (gid_t)); if (groups == NULL) { - fprintf( stderr, "groups ERROR: malloc cannot allocate memory\n"); + fprintf( stderr, "isadmin ERROR: malloc cannot allocate memory\n"); return -1; } if (getgrouplist(userinfo->pw_name, userinfo->pw_gid, groups, &nbgroups) == -1) { free(groups); - fprintf( stderr, "groups ERROR: cannot get groups\n"); + fprintf( stderr, "isadmin ERROR: cannot get groups\n"); return -1; } - /* Check if the given uid is in the specified group */ + /* Check if the given uid is in the system group */ for(i = 0 ; i < nbgroups ; i++) { - if(groups[i] == gid) { + if(groups[i] == system_gid) { free(groups); return 1; } diff --git a/src/groups.h b/src/isadmin.h similarity index 67% rename from src/groups.h rename to src/isadmin.h index 57175fc..25ebd75 100644 --- a/src/groups.h +++ b/src/isadmin.h @@ -22,27 +22,31 @@ extern "C" { #endif -#ifndef TIZEN_PLATFORM_WRAPPER_GROUPS_H -#define TIZEN_PLATFORM_WRAPPER_GROUPS_H - -#include "tzplatform_variables.h" +#ifndef TIZEN_PLATFORM_WRAPPER_ISADMIN_H +#define TIZEN_PLATFORM_WRAPPER_ISADMIN_H /* - * This feature aims to know if a user belongs to a specified group + * DISCLAIMER : + * This header and its associated source file are present to maintain a + * temporary solution. We need to know if an user have the privilege for + * a particular action. + * + * At the end, this feature will be managed by Cynara + * */ /* - * Return 0 if the given uid is not in the specified group. - * Return 1 if the given uid is in the specified group. + * Return 0 if the given uid is not in the admin group. + * Return 1 if the given uid is in the admin group. * * If you pass the -1 value to this function it will take the current uid given * by the POSIX function getuid(); */ -int _has_specified_group_static_(uid_t uid, enum tzplatform_variable group); +int _has_system_group_static_(uid_t uid); #ifdef __cplusplus } #endif -#endif /* TIZEN_PLATFORM_WRAPPER_GROUPS_H */ +#endif /* TIZEN_PLATFORM_WRAPPER_ISADMIN_H */ diff --git a/src/static-api.c b/src/static-api.c index 98f5e20..d6a4e0c 100644 --- a/src/static-api.c +++ b/src/static-api.c @@ -32,7 +32,7 @@ #include "tzplatform_config.h" #include "shared-api.h" -#include "groups.h" +#include "isadmin.h" #include "signup.inc" @@ -133,12 +133,7 @@ gid_t tzplatform_context_getgid(struct tzplatform_context *context, enum tzplatf int tzplatform_has_system_group(uid_t uid) { - return _has_specified_group_static_(uid, TZ_SYS_ADMIN_GROUP); -} - -int tzplatform_has_users_group(uid_t uid) -{ - return _has_specified_group_static_(uid, TZ_SYS_USER_GROUP); + return _has_system_group_static_(uid); } #ifdef TEST diff --git a/src/tzplatform_config.h b/src/tzplatform_config.h index 12b85b0..ab998b0 100644 --- a/src/tzplatform_config.h +++ b/src/tzplatform_config.h @@ -404,23 +404,6 @@ gid_t tzplatform_context_getgid(struct tzplatform_context *context, enum tzplatf extern int tzplatform_has_system_group(uid_t uid); -/* - Return 1 if given uid is in the regular users group (named "users") - Return 0 if not - Return -1 in case of error. - - Example: - tzplatform_has_users_group(1000) - - will return 0 or 1 depends on right of given uid. - - NOTE : - * If you pass the -1 value to this function it will take the current uid given - * by the POSIX function getuid(); -*/ -extern -int tzplatform_has_users_group(uid_t uid); - #ifdef __cplusplus } #endif -- 2.7.4