rpms/shadow-utils/F-11 shadow-4.0.17-login.defs, 1.3, 1.4 shadow-4.0.18.1-useradd, 1.2, 1.3 shadow-4.1.4-redhat.patch, NONE, 1.1 shadow-4.1.4.1-goodname.patch, NONE, 1.1 shadow-4.1.4.1-largeGroup.patch, NONE, 1.1 shadow-4.1.4.1-ldap.patch, NONE, 1.1 shadow-4.1.4.1-sysacc.patch, NONE, 1.1 .cvsignore, 1.20, 1.21 shadow-utils.spec, 1.130, 1.131 sources, 1.21, 1.22 shadow-4.1.3-goodname.patch, 1.1, NONE shadow-4.1.3-redhat.patch, 1.2, NONE shadow-4.1.3-selinux.patch, 1.1, NONE
Peter Vrabec
pvrabec at fedoraproject.org
Fri Jul 17 14:04:57 UTC 2009
- Previous message (by thread): rpms/grubby/devel .cvsignore, 1.2, 1.3 grubby.spec, 1.1, 1.2 sources, 1.2, 1.3
- Next message (by thread): rpms/ugene/F-11 .cvsignore, 1.3, 1.4 sources, 1.3, 1.4 ugene.spec, 1.4, 1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: pvrabec
Update of /cvs/extras/rpms/shadow-utils/F-11
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv2729
Modified Files:
.cvsignore shadow-utils.spec sources
Added Files:
shadow-4.0.17-login.defs shadow-4.0.18.1-useradd
shadow-4.1.4-redhat.patch shadow-4.1.4.1-goodname.patch
shadow-4.1.4.1-largeGroup.patch shadow-4.1.4.1-ldap.patch
shadow-4.1.4.1-sysacc.patch
Removed Files:
shadow-4.1.3-goodname.patch shadow-4.1.3-redhat.patch
shadow-4.1.3-selinux.patch
Log Message:
- fix a list of owned directories (#510366)
- reduce the reuse of system IDs
- speed up sys users look up on LDAP boxes (#511813)
- upgrade
Index: shadow-4.0.17-login.defs
===================================================================
RCS file: shadow-4.0.17-login.defs
diff -N shadow-4.0.17-login.defs
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ shadow-4.0.17-login.defs 17 Jul 2009 14:04:27 -0000 1.4
@@ -0,0 +1,58 @@
+# *REQUIRED*
+# Directory where mailboxes reside, _or_ name of file, relative to the
+# home directory. If you _do_ define both, MAIL_DIR takes precedence.
+# QMAIL_DIR is for Qmail
+#
+#QMAIL_DIR Maildir
+MAIL_DIR /var/spool/mail
+#MAIL_FILE .mail
+
+# Password aging controls:
+#
+# PASS_MAX_DAYS Maximum number of days a password may be used.
+# PASS_MIN_DAYS Minimum number of days allowed between password changes.
+# PASS_MIN_LEN Minimum acceptable password length.
+# PASS_WARN_AGE Number of days warning given before a password expires.
+#
+PASS_MAX_DAYS 99999
+PASS_MIN_DAYS 0
+PASS_MIN_LEN 5
+PASS_WARN_AGE 7
+
+#
+# Min/max values for automatic uid selection in useradd
+#
+UID_MIN 500
+UID_MAX 60000
+
+#
+# Min/max values for automatic gid selection in groupadd
+#
+GID_MIN 500
+GID_MAX 60000
+
+#
+# If defined, this command is run when removing a user.
+# It should remove any at/cron/print jobs etc. owned by
+# the user to be removed (passed as the first argument).
+#
+#USERDEL_CMD /usr/sbin/userdel_local
+
+#
+# If useradd should create home directories for users by default
+# On RH systems, we do. This option is overridden with the -m flag on
+# useradd command line.
+#
+CREATE_HOME yes
+
+# The permission mask is initialized to this value. If not specified,
+# the permission mask will be initialized to 022.
+UMASK 077
+
+# This enables userdel to remove user groups if no members exist.
+#
+USERGROUPS_ENAB yes
+
+# Use MD5 or DES to encrypt password? Red Hat use MD5 by default.
+MD5_CRYPT_ENAB yes
+
Index: shadow-4.0.18.1-useradd
===================================================================
RCS file: shadow-4.0.18.1-useradd
diff -N shadow-4.0.18.1-useradd
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ shadow-4.0.18.1-useradd 17 Jul 2009 14:04:27 -0000 1.3
@@ -0,0 +1,9 @@
+# useradd defaults file
+GROUP=100
+HOME=/home
+INACTIVE=-1
+EXPIRE=
+SHELL=/bin/bash
+SKEL=/etc/skel
+CREATE_MAIL_SPOOL=yes
+
shadow-4.1.4-redhat.patch:
libmisc/find_new_gid.c | 4 ++--
libmisc/find_new_uid.c | 4 ++--
src/useradd.c | 9 +++++----
3 files changed, 9 insertions(+), 8 deletions(-)
--- NEW FILE shadow-4.1.4-redhat.patch ---
diff -up shadow-4.1.4/libmisc/find_new_gid.c.redhat shadow-4.1.4/libmisc/find_new_gid.c
--- shadow-4.1.4/libmisc/find_new_gid.c.redhat 2009-04-23 19:36:42.000000000 +0200
+++ shadow-4.1.4/libmisc/find_new_gid.c 2009-05-15 12:01:18.000000000 +0200
@@ -58,11 +58,11 @@ int find_new_gid (bool sys_group,
assert (gid != NULL);
if (!sys_group) {
- gid_min = (gid_t) getdef_ulong ("GID_MIN", 1000UL);
+ gid_min = (gid_t) getdef_ulong ("GID_MIN", 500UL);
gid_max = (gid_t) getdef_ulong ("GID_MAX", 60000UL);
} else {
gid_min = (gid_t) getdef_ulong ("SYS_GID_MIN", 1UL);
- gid_max = (gid_t) getdef_ulong ("GID_MIN", 1000UL) - 1;
+ gid_max = (gid_t) getdef_ulong ("GID_MIN", 500UL) - 1;
gid_max = (gid_t) getdef_ulong ("SYS_GID_MAX", (unsigned long) gid_max);
}
used_gids = alloca (sizeof (bool) * (gid_max +1));
diff -up shadow-4.1.4/libmisc/find_new_uid.c.redhat shadow-4.1.4/libmisc/find_new_uid.c
--- shadow-4.1.4/libmisc/find_new_uid.c.redhat 2009-04-23 19:37:12.000000000 +0200
+++ shadow-4.1.4/libmisc/find_new_uid.c 2009-05-15 12:01:39.000000000 +0200
@@ -58,11 +58,11 @@ int find_new_uid (bool sys_user,
assert (uid != NULL);
if (!sys_user) {
- uid_min = (uid_t) getdef_ulong ("UID_MIN", 1000UL);
+ uid_min = (uid_t) getdef_ulong ("UID_MIN", 500UL);
uid_max = (uid_t) getdef_ulong ("UID_MAX", 60000UL);
} else {
uid_min = (uid_t) getdef_ulong ("SYS_UID_MIN", 1UL);
- uid_max = (uid_t) getdef_ulong ("UID_MIN", 1000UL) - 1;
+ uid_max = (uid_t) getdef_ulong ("UID_MIN", 500UL) - 1;
uid_max = (uid_t) getdef_ulong ("SYS_UID_MAX", (unsigned long) uid_max);
}
used_uids = alloca (sizeof (bool) * (uid_max +1));
diff -up shadow-4.1.4/src/useradd.c.redhat shadow-4.1.4/src/useradd.c
--- shadow-4.1.4/src/useradd.c.redhat 2009-05-10 20:26:35.000000000 +0200
+++ shadow-4.1.4/src/useradd.c 2009-05-15 11:59:40.000000000 +0200
@@ -90,7 +90,7 @@ char *Prog;
static gid_t def_group = 100;
static const char *def_gname = "other";
static const char *def_home = "/home";
-static const char *def_shell = "";
+static const char *def_shell = "/sbin/nologin";
static const char *def_template = SKEL_DIR;
static const char *def_create_mail_spool = "no";
@@ -102,7 +102,7 @@ static char def_file[] = USER_DEFAULTS_F
#define VALID(s) (strcspn (s, ":\n") == strlen (s))
static const char *user_name = "";
-static const char *user_pass = "!";
+static const char *user_pass = "!!";
static uid_t user_id;
static gid_t user_gid;
static const char *user_comment = "";
@@ -996,9 +996,9 @@ static void process_flags (int argc, cha
};
while ((c = getopt_long (argc, argv,
#ifdef WITH_SELINUX
- "b:c:d:De:f:g:G:k:K:lmMNop:rs:u:UZ:",
+ "b:c:d:De:f:g:G:k:K:lmMnNop:rs:u:UZ:",
#else
- "b:c:d:De:f:g:G:k:K:lmMNop:rs:u:U",
+ "b:c:d:De:f:g:G:k:K:lmMnNop:rs:u:U",
#endif
long_options, NULL)) != -1) {
switch (c) {
@@ -1148,6 +1148,7 @@ static void process_flags (int argc, cha
case 'M':
Mflg = true;
break;
+ case 'n':
case 'N':
Nflg = true;
break;
shadow-4.1.4.1-goodname.patch:
libmisc/chkname.c | 28 ++++++++++++++++++----------
man/groupadd.8 | 4 +---
man/useradd.8 | 2 --
3 files changed, 19 insertions(+), 15 deletions(-)
--- NEW FILE shadow-4.1.4.1-goodname.patch ---
diff -up shadow-4.1.4.1/libmisc/chkname.c.goodname shadow-4.1.4.1/libmisc/chkname.c
--- shadow-4.1.4.1/libmisc/chkname.c.goodname 2009-04-28 21:14:04.000000000 +0200
+++ shadow-4.1.4.1/libmisc/chkname.c 2009-06-16 13:47:08.000000000 +0200
@@ -49,20 +49,28 @@
static bool is_valid_name (const char *name)
{
/*
- * User/group names must match [a-z_][a-z0-9_-]*[$]
- */
- if (('\0' == *name) ||
- !((('a' <= *name) && ('z' >= *name)) || ('_' == *name))) {
+ * User/group names must match gnu e-regex:
+ * [a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,30}[a-zA-Z0-9_.$-]?
+ *
+ * as a non-POSIX, extension, allow "$" as the last char for
+ * sake of Samba 3.x "add machine script"
+ */
+ if ( ('\0' == *name) ||
+ !((*name >= 'a' && *name <= 'z') ||
+ (*name >= 'A' && *name <= 'Z') ||
+ (*name >= '0' && *name <= '9') ||
+ (*name == '_') || (*name == '.')
+ )) {
return false;
}
while ('\0' != *++name) {
- if (!(( ('a' <= *name) && ('z' >= *name) ) ||
- ( ('0' <= *name) && ('9' >= *name) ) ||
- ('_' == *name) ||
- ('-' == *name) ||
- ( ('$' == *name) && ('\0' == *(name + 1)) )
- )) {
+ if (!( (*name >= 'a' && *name <= 'z') ||
+ (*name >= 'A' && *name <= 'Z') ||
+ (*name >= '0' && *name <= '9') ||
+ (*name == '_') || (*name == '.') || (*name == '-') ||
+ (*name == '$' && *(name + 1) == '\0')
+ )) {
return false;
}
}
diff -up shadow-4.1.4.1/man/groupadd.8.goodname shadow-4.1.4.1/man/groupadd.8
--- shadow-4.1.4.1/man/groupadd.8.goodname 2009-05-22 15:56:08.000000000 +0200
+++ shadow-4.1.4.1/man/groupadd.8 2009-06-16 13:50:41.000000000 +0200
@@ -153,9 +153,7 @@ Shadow password suite configuration\&.
.RE
.SH "CAVEATS"
.PP
-Groupnames must start with a lower case letter or an underscore, followed by lower case letters, digits, underscores, or dashes\&. They can end with a dollar sign\&. In regular expression terms: [a\-z_][a\-z0\-9_\-]*[$]?
-.PP
-Groupnames may only be up to 16 characters long\&.
+Groupnames may only be up to 32 characters long\&.
.PP
You may not add a NIS or LDAP group\&. This must be performed on the corresponding server\&.
.PP
diff -up shadow-4.1.4.1/man/useradd.8.goodname shadow-4.1.4.1/man/useradd.8
--- shadow-4.1.4.1/man/useradd.8.goodname 2009-05-22 15:56:28.000000000 +0200
+++ shadow-4.1.4.1/man/useradd.8 2009-06-16 13:51:17.000000000 +0200
@@ -405,8 +405,6 @@ Similarly, if the username already exist
\fBuseradd\fR
will deny the user account creation request\&.
.PP
-Usernames must start with a lower case letter or an underscore, followed by lower case letters, digits, underscores, or dashes\&. They can end with a dollar sign\&. In regular expression terms: [a\-z_][a\-z0\-9_\-]*[$]?
-.PP
Usernames may only be up to 32 characters long\&.
.SH "CONFIGURATION"
.PP
shadow-4.1.4.1-largeGroup.patch:
lib/gshadow.c | 65 ++++++++++++++++++++++++++++++++++++++++-----------
libmisc/xgetXXbyYY.c | 12 +++++++--
libmisc/xgetgrgid.c | 1
libmisc/xgetgrnam.c | 1
libmisc/xgetpwnam.c | 1
libmisc/xgetpwuid.c | 1
libmisc/xgetspnam.c | 1
7 files changed, 61 insertions(+), 21 deletions(-)
--- NEW FILE shadow-4.1.4.1-largeGroup.patch ---
diff -U0 shadow-4.1.4.1/ChangeLog.large_group shadow-4.1.4.1/ChangeLog
diff -up shadow-4.1.4.1/lib/gshadow.c.large_group shadow-4.1.4.1/lib/gshadow.c
--- shadow-4.1.4.1/lib/gshadow.c.large_group 2009-04-23 13:53:56.000000000 +0200
+++ shadow-4.1.4.1/lib/gshadow.c 2009-06-16 14:47:08.000000000 +0200
@@ -2,7 +2,7 @@
* Copyright (c) 1990 - 1994, Julianne Frances Haugh
* Copyright (c) 1996 - 1998, Marek MichaÅkiewicz
* Copyright (c) 2005 , Tomasz KÅoczko
- * Copyright (c) 2008 , Nicolas François
+ * Copyright (c) 2008 - 2009, Nicolas François
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -41,7 +41,6 @@
#include "prototypes.h"
#include "defines.h"
static /*@null@*/FILE *shadow;
-static char sgrbuf[BUFSIZ * 4];
static /*@null@*//*@only@*/char **members = NULL;
static size_t nmembers = 0;
static /*@null@*//*@only@*/char **admins = NULL;
@@ -131,12 +130,25 @@ void endsgent (void)
/*@observer@*//*@null@*/struct sgrp *sgetsgent (const char *string)
{
+ static char *sgrbuf = NULL;
+ static size_t sgrbuflen = 0;
+
char *fields[FIELDS];
char *cp;
int i;
+ size_t len = strlen (string) + 1;
+
+ if (len > sgrbuflen) {
+ char *buf = (char *) realloc (sgrbuf, sizeof (char) * len);
+ if (NULL == buf) {
+ return NULL;
+ }
+ sgrbuf = buf;
+ sgrbuflen = len;
+ }
- strncpy (sgrbuf, string, sizeof sgrbuf - 1);
- sgrbuf[sizeof sgrbuf - 1] = '\0';
+ strncpy (sgrbuf, string, len);
+ sgrbuf[len-1] = '\0';
cp = strrchr (sgrbuf, '\n');
if (NULL != cp) {
@@ -161,7 +173,7 @@ void endsgent (void)
* the line is invalid.
*/
- if ((NULL != cp) || (i != FIELDS))
+ if ((NULL != cp) || (i != FIELDS)) {
#ifdef USE_NIS
if (!IS_NISCHAR (fields[0][0])) {
return 0;
@@ -171,6 +183,7 @@ void endsgent (void)
#else
return 0;
#endif
+ }
sgroup.sg_name = fields[0];
sgroup.sg_passwd = fields[1];
@@ -199,20 +212,48 @@ void endsgent (void)
/*@observer@*//*@null@*/struct sgrp *fgetsgent (/*@null@*/FILE * fp)
{
- char buf[sizeof sgrbuf];
+ static size_t buflen = 0;
+ static char *buf = NULL;
+
char *cp;
+ struct sgrp *ret;
+
+ if (0 == buflen) {
+ buf = (char *) malloc (BUFSIZ);
+ if (NULL == buf) {
+ return NULL;
+ }
+ }
if (NULL == fp) {
- return (0);
+ return NULL;
}
#ifdef USE_NIS
- while (fgetsx (buf, (int) sizeof buf, fp) != (char *) 0)
+ while (fgetsx (buf, (int) sizeof buf, fp) == buf)
#else
- if (fgetsx (buf, (int) sizeof buf, fp) != (char *) 0)
+ if (fgetsx (buf, (int) sizeof buf, fp) == buf)
#endif
{
- cp = strchr (buf, '\n');
+ while ( ((cp = strrchr (buf, '\n')) == NULL)
+ && (feof (fp) == 0)) {
+ size_t len;
+
+ cp = (char *) realloc (buf, buflen*2);
+ if (NULL == cp) {
+ return NULL;
+ }
+ buf = cp;
+ buflen *= 2;
+
+ len = strlen (buf);
+ if (fgetsx (&buf[len],
+ (int) (buflen - len),
+ fp) != &buf[len]) {
+ return NULL;
+ }
+ }
+ cp = strrchr (buf, '\n');
if (NULL != cp) {
*cp = '\0';
}
@@ -223,7 +264,7 @@ void endsgent (void)
#endif
return (sgetsgent (buf));
}
- return 0;
+ return NULL;
}
/*
@@ -235,7 +276,6 @@ void endsgent (void)
#ifdef USE_NIS
bool nis_1_group = false;
struct sgrp *val;
- char buf[BUFSIZ];
#endif
if (NULL == shadow) {
setsgent ();
@@ -334,7 +374,6 @@ void endsgent (void)
struct sgrp *sgrp;
#ifdef USE_NIS
- char buf[BUFSIZ];
static char save_name[16];
int nis_disabled = 0;
#endif
diff -up shadow-4.1.4.1/libmisc/xgetgrgid.c.large_group shadow-4.1.4.1/libmisc/xgetgrgid.c
--- shadow-4.1.4.1/libmisc/xgetgrgid.c.large_group 2008-09-06 16:56:51.000000000 +0200
+++ shadow-4.1.4.1/libmisc/xgetgrgid.c 2009-06-16 14:15:08.000000000 +0200
@@ -58,7 +58,6 @@
#define ARG_TYPE gid_t
#define ARG_NAME gid
#define DUP_FUNCTION __gr_dup
-#define MAX_LENGTH 0x8000
#define HAVE_FUNCTION_R (defined HAVE_GETGRGID_R)
#include "xgetXXbyYY.c"
diff -up shadow-4.1.4.1/libmisc/xgetgrnam.c.large_group shadow-4.1.4.1/libmisc/xgetgrnam.c
--- shadow-4.1.4.1/libmisc/xgetgrnam.c.large_group 2008-09-06 16:56:57.000000000 +0200
+++ shadow-4.1.4.1/libmisc/xgetgrnam.c 2009-06-16 14:15:08.000000000 +0200
@@ -58,7 +58,6 @@
#define ARG_TYPE const char *
#define ARG_NAME name
#define DUP_FUNCTION __gr_dup
-#define MAX_LENGTH 0x8000
#define HAVE_FUNCTION_R (defined HAVE_GETGRNAM_R)
#include "xgetXXbyYY.c"
diff -up shadow-4.1.4.1/libmisc/xgetpwnam.c.large_group shadow-4.1.4.1/libmisc/xgetpwnam.c
--- shadow-4.1.4.1/libmisc/xgetpwnam.c.large_group 2008-09-06 16:57:05.000000000 +0200
+++ shadow-4.1.4.1/libmisc/xgetpwnam.c 2009-06-16 14:15:08.000000000 +0200
@@ -58,7 +58,6 @@
#define ARG_TYPE const char *
#define ARG_NAME name
#define DUP_FUNCTION __pw_dup
-#define MAX_LENGTH 0x8000
#define HAVE_FUNCTION_R (defined HAVE_GETPWNAM_R)
#include "xgetXXbyYY.c"
diff -up shadow-4.1.4.1/libmisc/xgetpwuid.c.large_group shadow-4.1.4.1/libmisc/xgetpwuid.c
--- shadow-4.1.4.1/libmisc/xgetpwuid.c.large_group 2008-09-06 16:57:11.000000000 +0200
+++ shadow-4.1.4.1/libmisc/xgetpwuid.c 2009-06-16 14:15:08.000000000 +0200
@@ -58,7 +58,6 @@
#define ARG_TYPE uid_t
#define ARG_NAME uid
#define DUP_FUNCTION __pw_dup
-#define MAX_LENGTH 0x8000
#define HAVE_FUNCTION_R (defined HAVE_GETPWUID_R)
#include "xgetXXbyYY.c"
diff -up shadow-4.1.4.1/libmisc/xgetspnam.c.large_group shadow-4.1.4.1/libmisc/xgetspnam.c
--- shadow-4.1.4.1/libmisc/xgetspnam.c.large_group 2008-09-06 16:57:17.000000000 +0200
+++ shadow-4.1.4.1/libmisc/xgetspnam.c 2009-06-16 14:15:08.000000000 +0200
@@ -58,7 +58,6 @@
#define ARG_TYPE const char *
#define ARG_NAME name
#define DUP_FUNCTION __spw_dup
-#define MAX_LENGTH 0x8000
#define HAVE_FUNCTION_R (defined HAVE_GETSPNAM_R)
#include "xgetXXbyYY.c"
diff -up shadow-4.1.4.1/libmisc/xgetXXbyYY.c.large_group shadow-4.1.4.1/libmisc/xgetXXbyYY.c
--- shadow-4.1.4.1/libmisc/xgetXXbyYY.c.large_group 2009-04-23 11:15:53.000000000 +0200
+++ shadow-4.1.4.1/libmisc/xgetXXbyYY.c 2009-06-16 14:15:08.000000000 +0200
@@ -79,7 +79,7 @@
exit (13);
}
- do {
+ while (true) {
int status;
LOOKUP_TYPE *resbuf = NULL;
buffer = (char *)realloc (buffer, length);
@@ -106,8 +106,14 @@
return NULL;
}
- length *= 4;
- } while (length < MAX_LENGTH);
+ if (length <= ((size_t)-1 / 4)) {
+ length *= 4;
+ } else if (length == (size_t) -1) {
+ break;
+ } else {
+ length = (size_t) -1;
+ }
+ }
free(buffer);
free(result);
diff -up shadow-4.1.4.1/NEWS.large_group shadow-4.1.4.1/NEWS
shadow-4.1.4.1-ldap.patch:
find_new_gid.c | 25 +++++++++++++++++--------
find_new_uid.c | 27 +++++++++++++++++++--------
2 files changed, 36 insertions(+), 16 deletions(-)
--- NEW FILE shadow-4.1.4.1-ldap.patch ---
diff -up shadow-4.1.4.1/libmisc/find_new_gid.c.ldap shadow-4.1.4.1/libmisc/find_new_gid.c
--- shadow-4.1.4.1/libmisc/find_new_gid.c.ldap 2009-07-16 10:37:41.653798746 +0200
+++ shadow-4.1.4.1/libmisc/find_new_gid.c 2009-07-16 10:44:14.482808945 +0200
@@ -90,17 +90,26 @@ int find_new_gid (bool sys_group,
* but we also check the local database (gr_rewind/gr_next) in case
* some groups were created but the changes were not committed yet.
*/
- setgrent ();
- while ((grp = getgrent ()) != NULL) {
- if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
- group_id = grp->gr_gid + 1;
+ if (sys_group ) {
+ for(group_id = gid_min; group_id<=gid_max; group_id++) {
+ grp = getgrgid(group_id);
+ if(grp)
+ used_gids[grp->gr_gid] = true;
}
- /* create index of used GIDs */
- if (grp->gr_gid <= gid_max) {
- used_gids[grp->gr_gid] = true;
+ }
+ else {
+ setgrent ();
+ while ((grp = getgrent ()) != NULL) {
+ if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
+ group_id = grp->gr_gid + 1;
+ }
+ /* create index of used GIDs */
+ if (grp->gr_gid <= gid_max) {
+ used_gids[grp->gr_gid] = true;
+ }
}
+ endgrent ();
}
- endgrent ();
gr_rewind ();
while ((grp = gr_next ()) != NULL) {
if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
diff -up shadow-4.1.4.1/libmisc/find_new_uid.c.ldap shadow-4.1.4.1/libmisc/find_new_uid.c
--- shadow-4.1.4.1/libmisc/find_new_uid.c.ldap 2009-07-16 10:37:41.653798746 +0200
+++ shadow-4.1.4.1/libmisc/find_new_uid.c 2009-07-16 10:37:41.668798323 +0200
@@ -91,17 +91,27 @@ int find_new_uid (bool sys_user,
* but we also check the local database (pw_rewind/pw_next) in case
* some users were created but the changes were not committed yet.
*/
- setpwent ();
- while ((pwd = getpwent ()) != NULL) {
- if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
- user_id = pwd->pw_uid + 1;
+ /* speed up sys users look up on LDAP boxes */
+ if (sys_user) {
+ for (user_id = uid_min; user_id<=uid_max; user_id++) {
+ pwd = getpwuid(user_id);
+ if(pwd)
+ used_uids[user_id] = true;
}
- /* create index of used UIDs */
- if (pwd->pw_uid <= uid_max) {
- used_uids[pwd->pw_uid] = true;
+ }
+ else {
+ setpwent ();
+ while ((pwd = getpwent ()) != NULL) {
+ if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
+ user_id = pwd->pw_uid + 1;
+ }
+ /* create index of used UIDs */
+ if (pwd->pw_uid <= uid_max) {
+ used_uids[pwd->pw_uid] = true;
+ }
}
+ endpwent ();
}
- endpwent ();
pw_rewind ();
while ((pwd = pw_next ()) != NULL) {
if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
@@ -113,6 +123,7 @@ int find_new_uid (bool sys_user,
}
}
+
/* find free system account in reverse order */
if (sys_user) {
for (user_id = uid_max; user_id >= uid_min; user_id--) {
shadow-4.1.4.1-sysacc.patch:
find_new_gid.c | 93 +++++++++++++++++++++++++++++++----------------------
find_new_uid.c | 99 +++++++++++++++++++++++++++++++++------------------------
2 files changed, 113 insertions(+), 79 deletions(-)
--- NEW FILE shadow-4.1.4.1-sysacc.patch ---
diff -up shadow-4.1.4.1/libmisc/find_new_gid.c.sysacc shadow-4.1.4.1/libmisc/find_new_gid.c
--- shadow-4.1.4.1/libmisc/find_new_gid.c.sysacc 2009-07-16 11:51:34.807860808 +0200
+++ shadow-4.1.4.1/libmisc/find_new_gid.c 2009-07-16 14:19:08.678798578 +0200
@@ -52,7 +52,7 @@ int find_new_gid (bool sys_group,
/*@null@*/gid_t const *preferred_gid)
{
const struct group *grp;
- gid_t gid_min, gid_max, group_id;
+ gid_t gid_min, gid_max, group_id, id;
bool *used_gids;
assert (gid != NULL);
@@ -61,7 +61,7 @@ int find_new_gid (bool sys_group,
gid_min = (gid_t) getdef_ulong ("GID_MIN", 500UL);
gid_max = (gid_t) getdef_ulong ("GID_MAX", 60000UL);
} else {
- gid_min = (gid_t) getdef_ulong ("SYS_GID_MIN", 1UL);
+ gid_min = (gid_t) getdef_ulong ("SYS_GID_MIN", 101UL);
gid_max = (gid_t) getdef_ulong ("GID_MIN", 500UL) - 1;
gid_max = (gid_t) getdef_ulong ("SYS_GID_MAX", (unsigned long) gid_max);
}
@@ -80,7 +80,6 @@ int find_new_gid (bool sys_group,
return 0;
}
- group_id = gid_min;
/*
* Search the entire group file,
@@ -91,13 +90,28 @@ int find_new_gid (bool sys_group,
* some groups were created but the changes were not committed yet.
*/
if (sys_group ) {
- for(group_id = gid_min; group_id<=gid_max; group_id++) {
- grp = getgrgid(group_id);
- if(grp)
+ group_id = gid_max;
+ for(id = gid_max; id>=gid_min; id--) {
+ grp = getgrgid(id);
+ if(grp) {
+ group_id = id - 1;
used_gids[grp->gr_gid] = true;
+ }
+ }
+
+ gr_rewind ();
+ while ((grp = gr_next ()) != NULL) {
+ if ((grp->gr_gid <= group_id) && (grp->gr_gid >= gid_min)) {
+ group_id = grp->gr_gid - 1;
+ }
+ /* create index of used GIDs */
+ if (grp->gr_gid <= gid_max) {
+ used_gids[grp->gr_gid] = true;
+ }
}
}
else {
+ group_id = gid_min;
setgrent ();
while ((grp = getgrent ()) != NULL) {
if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
@@ -109,32 +123,16 @@ int find_new_gid (bool sys_group,
}
}
endgrent ();
- }
- gr_rewind ();
- while ((grp = gr_next ()) != NULL) {
- if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
- group_id = grp->gr_gid + 1;
- }
- /* create index of used GIDs */
- if (grp->gr_gid <= gid_max) {
- used_gids[grp->gr_gid] = true;
- }
- }
- /* find free system account in reverse order */
- if (sys_group) {
- for (group_id = gid_max; group_id >= gid_min; group_id--) {
- if (false == used_gids[group_id]) {
- break;
+ gr_rewind ();
+ while ((grp = gr_next ()) != NULL) {
+ if ((grp->gr_gid >= group_id) && (grp->gr_gid <= gid_max)) {
+ group_id = grp->gr_gid + 1;
+ }
+ /* create index of used GIDs */
+ if (grp->gr_gid <= gid_max) {
+ used_gids[grp->gr_gid] = true;
}
- }
- if ( group_id < gid_min ) {
- fprintf (stderr,
- _("%s: Can't get unique GID (no more available GIDs)\n"),
- Prog);
- SYSLOG ((LOG_WARN,
- "no more available GID on the system"));
- return -1;
}
}
@@ -143,16 +141,35 @@ int find_new_gid (bool sys_group,
* will give us GID_MAX+1 even if not unique. Search for the first
* free GID starting with GID_MIN.
*/
- if (group_id == gid_max + 1) {
- for (group_id = gid_min; group_id < gid_max; group_id++) {
- if (false == used_gids[group_id]) {
- break;
+ if (sys_group) {
+ if (group_id == gid_min - 1) {
+ for (group_id = gid_max; group_id >= gid_min; group_id--) {
+ if (false == used_gids[group_id]) {
+ break;
+ }
+ }
+ if ( group_id < gid_min ) {
+ fprintf (stderr,
+ _("%s: Can't get unique GID (no more available GIDs)\n"),
+ Prog);
+ SYSLOG ((LOG_WARN,
+ "no more available GID on the system"));
+ return -1;
}
}
- if (group_id == gid_max) {
- fprintf (stderr, _("%s: Can't get unique GID (no more available GIDs)\n"), Prog);
- SYSLOG ((LOG_WARN, "no more available GID on the system"));
- return -1;
+ }
+ else {
+ if (group_id == gid_max + 1) {
+ for (group_id = gid_min; group_id < gid_max; group_id++) {
+ if (false == used_gids[group_id]) {
+ break;
+ }
+ }
+ if (group_id == gid_max) {
+ fprintf (stderr, _("%s: Can't get unique GID (no more available GIDs)\n"), Prog);
+ SYSLOG ((LOG_WARN, "no more available GID on the system"));
+ return -1;
+ }
}
}
diff -up shadow-4.1.4.1/libmisc/find_new_uid.c.sysacc shadow-4.1.4.1/libmisc/find_new_uid.c
--- shadow-4.1.4.1/libmisc/find_new_uid.c.sysacc 2009-07-16 11:51:34.807860808 +0200
+++ shadow-4.1.4.1/libmisc/find_new_uid.c 2009-07-16 14:13:38.120798526 +0200
@@ -52,7 +52,7 @@ int find_new_uid (bool sys_user,
/*@null@*/uid_t const *preferred_uid)
{
const struct passwd *pwd;
- uid_t uid_min, uid_max, user_id;
+ uid_t uid_min, uid_max, user_id, id;
bool *used_uids;
assert (uid != NULL);
@@ -61,7 +61,7 @@ int find_new_uid (bool sys_user,
uid_min = (uid_t) getdef_ulong ("UID_MIN", 500UL);
uid_max = (uid_t) getdef_ulong ("UID_MAX", 60000UL);
} else {
- uid_min = (uid_t) getdef_ulong ("SYS_UID_MIN", 1UL);
+ uid_min = (uid_t) getdef_ulong ("SYS_UID_MIN", 101UL);
uid_max = (uid_t) getdef_ulong ("UID_MIN", 500UL) - 1;
uid_max = (uid_t) getdef_ulong ("SYS_UID_MAX", (unsigned long) uid_max);
}
@@ -81,8 +81,6 @@ int find_new_uid (bool sys_user,
}
- user_id = uid_min;
-
/*
* Search the entire password file,
* looking for the largest unused value.
@@ -91,15 +89,30 @@ int find_new_uid (bool sys_user,
* but we also check the local database (pw_rewind/pw_next) in case
* some users were created but the changes were not committed yet.
*/
- /* speed up sys users look up on LDAP boxes */
if (sys_user) {
- for (user_id = uid_min; user_id<=uid_max; user_id++) {
- pwd = getpwuid(user_id);
- if(pwd)
+ user_id = uid_max;
+ for (id = uid_max; id>=uid_min; id--) {
+ pwd = getpwuid(id);
+ if(pwd) {
+ user_id = id - 1;
used_uids[user_id] = true;
+ }
}
+
+ pw_rewind ();
+ while ((pwd = pw_next ()) != NULL) {
+ if ((pwd->pw_uid <= user_id) && (pwd->pw_uid >= uid_min)) {
+ user_id = pwd->pw_uid - 1;
+ }
+ /* create index of used UIDs */
+ if (pwd->pw_uid <= uid_max) {
+ used_uids[pwd->pw_uid] = true;
+ }
+ }
+
}
else {
+ user_id = uid_min;
setpwent ();
while ((pwd = getpwent ()) != NULL) {
if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
@@ -111,51 +124,55 @@ int find_new_uid (bool sys_user,
}
}
endpwent ();
- }
- pw_rewind ();
- while ((pwd = pw_next ()) != NULL) {
- if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
- user_id = pwd->pw_uid + 1;
- }
- /* create index of used UIDs */
- if (pwd->pw_uid <= uid_max) {
- used_uids[pwd->pw_uid] = true;
- }
- }
-
- /* find free system account in reverse order */
- if (sys_user) {
- for (user_id = uid_max; user_id >= uid_min; user_id--) {
- if (false == used_uids[user_id]) {
- break;
+ pw_rewind ();
+ while ((pwd = pw_next ()) != NULL) {
+ if ((pwd->pw_uid >= user_id) && (pwd->pw_uid <= uid_max)) {
+ user_id = pwd->pw_uid + 1;
+ }
+ /* create index of used UIDs */
+ if (pwd->pw_uid <= uid_max) {
+ used_uids[pwd->pw_uid] = true;
}
- }
- if (user_id < uid_min ) {
- fprintf (stderr,
- _("%s: Can't get unique system UID (no more available UIDs)\n"),
- Prog);
- SYSLOG ((LOG_WARN,
- "no more available UID on the system"));
- return -1;
}
}
+
/*
* If a user with UID equal to UID_MAX exists, the above algorithm
* will give us UID_MAX+1 even if not unique. Search for the first
* free UID starting with UID_MIN.
*/
- if (user_id == uid_max + 1) {
- for (user_id = uid_min; user_id < uid_max; user_id++) {
- if (false == used_uids[user_id]) {
- break;
+ if (sys_user) {
+ if (user_id == uid_min - 1) {
+ for (user_id = uid_max; user_id >= uid_min; user_id--) {
+ if (false == used_uids[user_id]) {
+ break;
+ }
+ }
+ if (user_id < uid_min ) {
+ fprintf (stderr,
+ _("%s: Can't get unique system UID (no more available UIDs)\n"),
+ Prog);
+ SYSLOG ((LOG_WARN,
+ "no more available UID on the system"));
+ return -1;
}
}
- if (user_id == uid_max) {
- fprintf (stderr, _("%s: Can't get unique UID (no more available UIDs)\n"), Prog);
- SYSLOG ((LOG_WARN, "no more available UID on the system"));
- return -1;
+ }
+ else {
+ if (user_id == uid_max + 1) {
+ for (user_id = uid_min; user_id < uid_max; user_id++) {
+ if (false == used_uids[user_id]) {
+ break;
+ }
+ }
+ if (user_id == uid_max) {
+ fprintf (stderr, _("%s: Can't get unique UID (no more available UIDs)\n"),
+ Prog);
+ SYSLOG ((LOG_WARN, "no more available UID on the system"));
+ return -1;
+ }
}
}
Index: .cvsignore
===================================================================
RCS file: /cvs/extras/rpms/shadow-utils/F-11/.cvsignore,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -p -r1.20 -r1.21
--- .cvsignore 14 Apr 2009 10:19:12 -0000 1.20
+++ .cvsignore 17 Jul 2009 14:04:27 -0000 1.21
@@ -1,3 +1 @@
-shadow-4.0.17-login.defs
-shadow-4.0.18.1-useradd
-shadow-4.1.3.tar.bz2
+shadow-4.1.4.1.tar.bz2
Index: shadow-utils.spec
===================================================================
RCS file: /cvs/extras/rpms/shadow-utils/F-11/shadow-utils.spec,v
retrieving revision 1.130
retrieving revision 1.131
diff -u -p -r1.130 -r1.131
--- shadow-utils.spec 14 Apr 2009 14:12:16 -0000 1.130
+++ shadow-utils.spec 17 Jul 2009 14:04:27 -0000 1.131
@@ -1,15 +1,17 @@
Summary: Utilities for managing accounts and shadow password files
Name: shadow-utils
-Version: 4.1.3
-Release: 2%{?dist}
+Version: 4.1.4.1
+Release: 4%{?dist}
Epoch: 2
URL: http://pkg-shadow.alioth.debian.org/
Source0: ftp://pkg-shadow.alioth.debian.org/pub/pkg-shadow/shadow-%{version}.tar.bz2
Source1: shadow-4.0.17-login.defs
Source2: shadow-4.0.18.1-useradd
-Patch0: shadow-4.1.3-redhat.patch
-Patch1: shadow-4.1.3-goodname.patch
-Patch2: shadow-4.1.3-selinux.patch
+Patch0: shadow-4.1.4-redhat.patch
+Patch1: shadow-4.1.4.1-goodname.patch
+Patch2: shadow-4.1.4.1-largeGroup.patch
+Patch3: shadow-4.1.4.1-ldap.patch
+Patch4: shadow-4.1.4.1-sysacc.patch
License: BSD and GPLv2+
Group: System Environment/Base
BuildRequires: libselinux-devel >= 1.25.2-1
@@ -36,7 +38,9 @@ are used for managing group accounts.
%setup -q -n shadow-%{version}
%patch0 -p1 -b .redhat
%patch1 -p1 -b .goodname
-%patch2 -p1 -b .selinux
+%patch2 -p1 -b .largeGroup
+%patch3 -p1 -b .ldap
+%patch4 -p1 -b .sysacc
iconv -f ISO88591 -t utf-8 doc/HOWTO > doc/HOWTO.utf8
cp -f doc/HOWTO.utf8 doc/HOWTO
@@ -125,7 +129,9 @@ find $RPM_BUILD_ROOT%{_mandir} -depth -t
for dir in $(ls -1d $RPM_BUILD_ROOT%{_mandir}/{??,??_??}) ; do
dir=$(echo $dir | sed -e "s|^$RPM_BUILD_ROOT||")
lang=$(basename $dir)
- echo "%%lang($lang) $dir/man*/*" >> shadow.lang
+ echo "%%lang($lang) $dir" >> shadow.lang
+ echo "%%lang($lang) $dir/man*" >> shadow.lang
+# echo "%%lang($lang) $dir/man*/*" >> shadow.lang
done
%clean
@@ -176,6 +182,27 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man8/vigr.8*
%changelog
+* Thu Jul 16 2009 Peter Vrabec <pvrabec at redhat.com> 2:4.1.4.1-4
+- fix a list of owned directories (#510366)
+
+* Thu Jul 16 2009 Peter Vrabec <pvrabec at redhat.com> 2:4.1.4.1-3
+- reduce the reuse of system IDs
+
+* Wed Jul 15 2009 Peter Vrabec <pvrabec at redhat.com> 2:4.1.4.1-2
+- speed up sys users look up on LDAP boxes (#511813)
+
+* Tue Jun 16 2009 Peter Vrabec <pvrabec at redhat.com> 2:4.1.4.1-1
+- upgrade
+
+* Fri May 15 2009 Peter Vrabec <pvrabec at redhat.com> 2:4.1.4-1
+- upgrade
+
+* Wed Apr 22 2009 Peter Vrabec <pvrabec at redhat.com> 2:4.1.3.1-2
+- lastlog fix
+
+* Fri Apr 17 2009 Peter Vrabec <pvrabec at redhat.com> 2:4.1.3.1-1
+- upgrade
+
* Tue Apr 14 2009 Peter Vrabec <pvrabec at redhat.com> 2:4.1.3-2
- get "-n" option back
- fix selinux issues
Index: sources
===================================================================
RCS file: /cvs/extras/rpms/shadow-utils/F-11/sources,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -p -r1.21 -r1.22
--- sources 14 Apr 2009 10:19:14 -0000 1.21
+++ sources 17 Jul 2009 14:04:27 -0000 1.22
@@ -1,3 +1 @@
-e91727c55dbafc9915250e31535f13bb shadow-4.0.17-login.defs
-ebdf46b79f9b414353c9ae8aba4d55cc shadow-4.0.18.1-useradd
-d222bd50f64d52a32882c82ab1e85f28 shadow-4.1.3.tar.bz2
+62f7dae4cb54fa84e478c4602d58cbe8 shadow-4.1.4.1.tar.bz2
--- shadow-4.1.3-goodname.patch DELETED ---
--- shadow-4.1.3-redhat.patch DELETED ---
--- shadow-4.1.3-selinux.patch DELETED ---
- Previous message (by thread): rpms/grubby/devel .cvsignore, 1.2, 1.3 grubby.spec, 1.1, 1.2 sources, 1.2, 1.3
- Next message (by thread): rpms/ugene/F-11 .cvsignore, 1.3, 1.4 sources, 1.3, 1.4 ugene.spec, 1.4, 1.5
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list