tzplatform_get.c \
passwd.h \
passwd.c \
tzplatform_get.c \
passwd.h \
passwd.c \
+ isadmin.h \
+ isadmin.c
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 ./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
d gcc -o get tzplatform_get.o static-api.o -L. -ltzplatform-static -ltzplatform-shared
#include <grp.h>
#include <pwd.h>
#include <grp.h>
#include <pwd.h>
+#include "isadmin.h"
+#include "tzplatform_variables.h"
#include "tzplatform_config.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 passwd *userinfo = NULL;
- struct group *groupinfo = NULL;
- const char *grpname = NULL;
+ struct group *systemgroupinfo = NULL;
+ const char *sysgrpname = NULL;
gid_t *groups = NULL;
int i, nbgroups = 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;
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");
- 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);
- gid = groupinfo->gr_gid;
+ system_gid = systemgroupinfo->gr_gid;
/* Get all the gid of the given uid */
/* Get all the gid of the given uid */
/* 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) {
/* 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) {
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);
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");
- /* 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++) {
for(i = 0 ; i < nbgroups ; i++) {
+ if(groups[i] == system_gid) {
free(groups);
return 1;
}
free(groups);
return 1;
}
-#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();
*/
*
* 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
#ifdef __cplusplus
}
#endif
-#endif /* TIZEN_PLATFORM_WRAPPER_GROUPS_H */
+#endif /* TIZEN_PLATFORM_WRAPPER_ISADMIN_H */
#include "tzplatform_config.h"
#include "shared-api.h"
#include "tzplatform_config.h"
#include "shared-api.h"
int tzplatform_has_system_group(uid_t uid)
{
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);
extern
int tzplatform_has_system_group(uid_t uid);
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
#ifdef __cplusplus
}
#endif