668bfe96b9
ktsuss stands for "keep the su simple, stupid", and as the name says, is a graphical version of su written in C and GTK+ 2. With some tweaks by and ok jasper@
81 lines
2.2 KiB
Plaintext
81 lines
2.2 KiB
Plaintext
$OpenBSD: patch-src_auth_c,v 1.1.1.1 2009/06/18 19:45:14 landry Exp $
|
|
replace linux-only funcs by their posix equivalents
|
|
--- src/auth.c.orig Sun Jun 29 23:45:05 2008
|
|
+++ src/auth.c Wed Jun 17 22:07:23 2009
|
|
@@ -45,10 +45,6 @@
|
|
#include <grp.h>
|
|
#include "errors.h"
|
|
|
|
-struct group *fgetgrent(FILE * stream);
|
|
-struct passwd *fgetpwent(FILE * stream);
|
|
-int setgroups(size_t size, const gid_t * list);
|
|
-
|
|
char *get_real_name(const char *command)
|
|
{
|
|
char *real_PATH, *path, *subtoken, *PATH;
|
|
@@ -106,13 +102,10 @@ inline int *fixed_realloc(int *ptr, int actual, int si
|
|
int set_additional_g(const char *username)
|
|
{
|
|
int i, x = 0;
|
|
- int *groups = NULL;
|
|
+ gid_t *groups = NULL;
|
|
struct group *ag;
|
|
- FILE *file;
|
|
|
|
- if ((file = fopen("/etc/group", "r")) == NULL)
|
|
- return ERR_OPEN_FILE_GROUP;
|
|
- while ((ag = fgetgrent(file)) != NULL) {
|
|
+ while ((ag = getgrent()) != NULL) {
|
|
for (i = 0; ag->gr_mem[i]; i++) {
|
|
if (!strcmp(ag->gr_mem[i], username)) {
|
|
x += 1;
|
|
@@ -122,7 +115,7 @@ int set_additional_g(const char *username)
|
|
}
|
|
}
|
|
}
|
|
- fclose(file);
|
|
+ endgrent();
|
|
if (x) {
|
|
if (setgroups(x, groups))
|
|
return ERR_FAILED_ADDITIONAL_GIDS;
|
|
@@ -134,18 +127,17 @@ int set_additional_g(const char *username)
|
|
int make_me_new(const char *username, const char *password, int chk_passwd)
|
|
{
|
|
struct passwd *pw;
|
|
+#ifdef __linux__
|
|
struct spwd *sp;
|
|
+#endif
|
|
const char *correct;
|
|
- FILE *file;
|
|
char *encrypted;
|
|
int error;
|
|
|
|
- if ((file = fopen("/etc/passwd", "r")) == NULL)
|
|
- return ERR_OPEN_FILE_PASSWD;
|
|
- while ((pw = fgetpwent(file)) != NULL)
|
|
+ while ((pw = getpwent()) != NULL)
|
|
if (!strcmp(pw->pw_name, username))
|
|
break;
|
|
- fclose(file);
|
|
+ endpwent();
|
|
if (pw == NULL)
|
|
return ERR_INVALID_USERNAME;
|
|
if (chk_passwd) {
|
|
@@ -188,14 +180,11 @@ int try(const char *username, const char *password, in
|
|
int check_user(const char *username)
|
|
{
|
|
struct passwd *pw;
|
|
- FILE *file;
|
|
|
|
- if ((file = fopen("/etc/passwd", "r")) == NULL)
|
|
- return ERR_OPEN_FILE_PASSWD;
|
|
- while ((pw = fgetpwent(file)) != NULL)
|
|
+ while ((pw = getpwent()) != NULL)
|
|
if (!strcmp(pw->pw_name, username))
|
|
break;
|
|
- fclose(file);
|
|
+ endpwent();
|
|
if (pw == NULL)
|
|
return ERR_INVALID_USERNAME;
|
|
return ERR_SUCCESS;
|