Hello community,
here is the log from the commit of package bash for openSUSE:Factory checked in at 2011-11-22 17:47:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bash (Old)
and /work/SRC/openSUSE:Factory/.bash.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bash", Maintainer is "werner@suse.com"
Changes:
--------
--- /work/SRC/openSUSE:Factory/bash/bash.changes 2011-11-21 12:34:19.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.bash.new/bash.changes 2011-11-22 17:47:21.000000000 +0100
@@ -1,0 +2,6 @@
+Mon Nov 21 15:35:05 UTC 2011 - werner@suse.de
+
+- Disable endpwent() in rl_username_completion_function() as this
+ cause a deadlock in a futex of the glibc (bnc#731556)
+
+-------------------------------------------------------------------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ bash-4.2-endpw.dif ++++++
--- /var/tmp/diff_new_pack.MlqEvD/_old 2011-11-22 17:47:24.000000000 +0100
+++ /var/tmp/diff_new_pack.MlqEvD/_new 2011-11-22 17:47:24.000000000 +0100
@@ -1,48 +1,58 @@
--- bashline.c
-+++ bashline.c 2011-11-11 13:22:00.119146416 +0000
-@@ -2148,10 +2148,10 @@ bash_groupname_completion_function (text
- if (gnamelen == 0 || (STREQN (gname, grent->gr_name, gnamelen)))
- break;
- }
-+ endgrent ();
-
- if (grent == 0)
- {
-- endgrent ();
- return ((char *)NULL);
++++ bashline.c 2011-11-21 12:41:19.831646479 +0000
+@@ -2149,6 +2149,7 @@ bash_groupname_completion_function (text
}
+ value = savestring (grent->gr_name);
++ endgrent ();
+ return (value);
+ #endif
+ }
--- examples/loadables/finfo.c
-+++ examples/loadables/finfo.c 2011-11-11 13:21:12.319218165 +0000
-@@ -269,9 +269,11 @@ struct stat *st;
- printmode((int) st->st_mode);
- printf("Link count: %d\n", (int) st->st_nlink);
++++ examples/loadables/finfo.c 2011-11-21 12:23:17.331147246 +0000
+@@ -269,6 +269,7 @@ struct stat *st;
pw = getpwuid(st->st_uid);
-+ endpwent();
owner = pw ? pw->pw_name : "unknown";
printf("Uid of owner: %d (%s)\n", (int) st->st_uid, owner);
++ endpwent();
gr = getgrgid(st->st_gid);
-+ endgrent();
owner = gr ? gr->gr_name : "unknown";
printf("Gid of owner: %d (%s)\n", (int) st->st_gid, owner);
- printf("Device type: %d\n", (int) st->st_rdev);
-@@ -348,12 +350,14 @@ int flags;
+@@ -277,6 +278,7 @@ struct stat *st;
+ printf("File last access time: %s", ctime (&st->st_atime));
+ printf("File last modify time: %s", ctime (&st->st_mtime));
+ printf("File last status change time: %s", ctime (&st->st_ctime));
++ endgrent();
+ fflush(stdout);
+ return(0);
+ }
+@@ -345,16 +347,18 @@ int flags;
+ else if (flags & OPT_PMASK)
printf("%o\n", getperm(st->st_mode) & pmask);
else if (flags & OPT_UID) {
- pw = getpwuid(st->st_uid);
-+ endpwent();
- if (flags & OPT_ASCII)
+- pw = getpwuid(st->st_uid);
+- if (flags & OPT_ASCII)
++ if (flags & OPT_ASCII) {
++ pw = getpwuid(st->st_uid);
printf("%s\n", pw ? pw->pw_name : "unknown");
- else
+- else
++ endpwent();
++ } else
printf("%d\n", st->st_uid);
} else if (flags & OPT_GID) {
- gr = getgrgid(st->st_gid);
-+ endgrent();
- if (flags & OPT_ASCII)
+- gr = getgrgid(st->st_gid);
+- if (flags & OPT_ASCII)
++ if (flags & OPT_ASCII) {
++ gr = getgrgid(st->st_gid);
printf("%s\n", gr ? gr->gr_name : "unknown");
- else
+- else
++ endgrent();
++ } else
+ printf("%d\n", st->st_gid);
+ } else if (flags & OPT_SIZE)
+ printf("%ld\n", (long) st->st_size);
--- examples/loadables/id.c
-+++ examples/loadables/id.c 2011-11-11 13:19:36.515148229 +0000
++++ examples/loadables/id.c 2011-11-21 12:39:06.895646231 +0000
@@ -42,6 +42,7 @@
#if !defined (HAVE_GETPW_DECLS)
@@ -51,31 +61,72 @@
#endif
extern struct group *getgrgid ();
-@@ -146,6 +147,7 @@ inituser (uname)
+@@ -136,18 +137,26 @@ static int
+ inituser (uname)
+ char *uname;
+ {
+- struct passwd *pwd;
+-
+ if (uname)
+ {
++ struct passwd *pwd;
++ int r;
++
++ r = 0;
+ pwd = getpwnam (uname);
+ if (pwd == 0)
+ {
builtin_error ("%s: no such user", uname);
- return -1;
+- return -1;
++ r = -1;
}
+- ruid = euid = pwd->pw_uid;
+- rgid = egid = pwd->pw_gid;
++ else
++ {
++ ruid = euid = pwd->pw_uid;
++ rgid = egid = pwd->pw_gid;
++ }
+ endpwent ();
- ruid = euid = pwd->pw_uid;
- rgid = egid = pwd->pw_gid;
++ if (r < 0)
++ return r;
}
-@@ -173,6 +175,7 @@ id_pruser (uid)
+ else
+ {
+@@ -172,11 +181,12 @@ id_pruser (uid)
+ {
pwd = getpwuid (uid);
if (pwd == NULL)
- r = 1;
+- r = 1;
++ r = 1;
++ else
++ printf ("%s", pwd->pw_name);
+ endpwent ();
}
- if (pwd)
- printf ("%s", pwd->pw_name);
-@@ -197,6 +200,7 @@ id_prgrp (gid)
+- if (pwd)
+- printf ("%s", pwd->pw_name);
+- else
++ if (pwd == NULL)
+ printf ("%u", (unsigned) uid);
+
+ return r;
+@@ -197,11 +207,12 @@ id_prgrp (gid)
grp = getgrgid (gid);
if (grp == NULL)
r = 1;
++ else
++ printf ("%s", grp->gr_name);
+ endgrent ();
}
- if (grp)
-@@ -307,6 +311,8 @@ id_prall (uname)
+- if (grp)
+- printf ("%s", grp->gr_name);
+- else
++ if (grp == NULL)
+ printf ("%u", (unsigned) gid);
+
+ return r;
+@@ -307,6 +318,8 @@ id_prall (uname)
else
printf ("(%s)", grp->gr_name);
}
@@ -85,8 +136,8 @@
return r;
}
--- lib/tilde/shell.c
-+++ lib/tilde/shell.c 2011-11-11 13:12:35.932960442 +0000
-@@ -45,7 +45,12 @@
++++ lib/tilde/shell.c 2011-11-21 13:07:02.099146925 +0000
+@@ -45,9 +45,18 @@
#include