Mailinglist Archive: opensuse-commit (1400 mails)

< Previous Next >
commit bash for openSUSE:Factory
Hello community,

here is the log from the commit of package bash for openSUSE:Factory checked in
at 2011-11-14 11:49:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bash (Old)
and /work/SRC/openSUSE:Factory/.bash.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "bash", Maintainer is "werner@xxxxxxxx"

Changes:
--------
--- /work/SRC/openSUSE:Factory/bash/bash.changes 2011-11-02
11:47:21.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.bash.new/bash.changes 2011-11-14
11:49:44.000000000 +0100
@@ -1,0 +2,12 @@
+Fri Nov 11 15:27:12 UTC 2011 - werner@xxxxxxx
+
+- Avoid memory mapped /var/run/nscd/passwd at shutdown by simply
+ unmapping this only used area if parent is systemd or SysVinit
+
+-------------------------------------------------------------------
+Fri Nov 11 13:45:40 UTC 2011 - werner@xxxxxxx
+
+- Always close get(pw|gr)func with endpw() respectivly with endgr()
+ to avoid memory mapped passwd/groups of cache files from nscd
+
+-------------------------------------------------------------------

New:
----
bash-4.2-endpw.dif
bash-4.2-nscdunmap.dif
readline-6.2-endpw.dif

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ bash.spec ++++++
--- /var/tmp/diff_new_pack.rmTAzE/_old 2011-11-14 11:49:46.000000000 +0100
+++ /var/tmp/diff_new_pack.rmTAzE/_new 2011-11-14 11:49:46.000000000 +0100
@@ -59,12 +59,14 @@
Patch3: bash-4.2-2.4.4.patch
Patch4: bash-3.0-evalexp.patch
Patch5: bash-3.0-warn-locale.patch
+Patch6: bash-4.2-endpw.dif
Patch7: bash-3.0-decl.patch
Patch8: bash-4.0-async-bnc523667.dif
Patch9: bash-4.0-extended_quote.patch
Patch10: bash-3.2-printf.patch
Patch11: bash-4.0-loadables.dif
Patch12: bash-4.1-completion.dif
+Patch13: bash-4.2-nscdunmap.dif
Patch14: bash-4.2-sigrestart.patch
Patch15: bash-3.2-longjmp.dif
Patch16: bash-4.0-setlocale.dif
@@ -74,6 +76,7 @@
Patch22: readline-6.1-wrap.patch
Patch23: readline-5.2-conf.patch
Patch24: readline-6.2-metamode.patch
+Patch25: readline-6.2-endpw.dif
Patch30: readline-6.2-destdir.patch
Patch40: bash-4.1-bash.bashrc.dif
Patch46: man2html-no-timestamp.patch
@@ -270,12 +273,14 @@
%patch3 -p0 -b .2.4.4
%patch4 -p0 -b .evalexp
%patch5 -p0 -b .warnlc
+%patch6 -p0 -b .endpw
%patch7 -p0 -b .decl
%patch8 -p0 -b .async
%patch9 -p0 -b .extended_quote
%patch10 -p0 -b .printf
%patch11 -p0 -b .plugins
%patch12 -p0 -b .completion
+%patch13 -p0 -b .nscdunmap
%patch14 -p0 -b .sigrestart
%patch15 -p0 -b .longjmp
%patch16 -p0 -b .setlocale
@@ -284,6 +289,7 @@
%patch22 -p0 -b .wrap
%patch23 -p0 -b .conf
%patch24 -p0 -b .metamode
+%patch25 -p0 -b .endpw
%patch40 -p0 -b .bashrc
%patch46 -p0 -b .notimestamp
%patch0 -p0 -b .0
@@ -297,6 +303,7 @@
%patch22 -p2 -b .wrap
%patch23 -p2 -b .conf
%patch24 -p2 -b .metamode
+%patch25 -p2 -b .endpw
%patch30 -p0 -b .destdir
%patch20 -p0 -b .0


++++++ bash-4.2-endpw.dif ++++++
--- 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);
}

--- 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);
pw = getpwuid(st->st_uid);
+ endpwent();
owner = pw ? pw->pw_name : "unknown";
printf("Uid of owner: %d (%s)\n", (int) st->st_uid, owner);
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;
printf("%o\n", getperm(st->st_mode) & pmask);
else if (flags & OPT_UID) {
pw = getpwuid(st->st_uid);
+ endpwent();
if (flags & OPT_ASCII)
printf("%s\n", pw ? pw->pw_name : "unknown");
else
printf("%d\n", st->st_uid);
} else if (flags & OPT_GID) {
gr = getgrgid(st->st_gid);
+ endgrent();
if (flags & OPT_ASCII)
printf("%s\n", gr ? gr->gr_name : "unknown");
else
--- examples/loadables/id.c
+++ examples/loadables/id.c 2011-11-11 13:19:36.515148229 +0000
@@ -42,6 +42,7 @@

#if !defined (HAVE_GETPW_DECLS)
extern struct passwd *getpwuid ();
+extern void endpwent ();
#endif
extern struct group *getgrgid ();

@@ -146,6 +147,7 @@ inituser (uname)
builtin_error ("%s: no such user", uname);
return -1;
}
+ endpwent ();
ruid = euid = pwd->pw_uid;
rgid = egid = pwd->pw_gid;
}
@@ -173,6 +175,7 @@ id_pruser (uid)
pwd = getpwuid (uid);
if (pwd == NULL)
r = 1;
+ endpwent ();
}
if (pwd)
printf ("%s", pwd->pw_name);
@@ -197,6 +200,7 @@ id_prgrp (gid)
grp = getgrgid (gid);
if (grp == NULL)
r = 1;
+ endgrent ();
}

if (grp)
@@ -307,6 +311,8 @@ id_prall (uname)
else
printf ("(%s)", grp->gr_name);
}
+ endpwent ();
+ endgrent ();

return r;
}
--- lib/tilde/shell.c
+++ lib/tilde/shell.c 2011-11-11 13:12:35.932960442 +0000
@@ -45,7 +45,12 @@
#include <pwd.h>

#if !defined (HAVE_GETPW_DECLS)
+# if defined (HAVE_GETPWUID)
extern struct passwd *getpwuid ();
+# endif
+# if defined (HAVE_GETPWENT)
+extern void endpwent ();
+# endif
#endif /* !HAVE_GETPW_DECLS */

char *
@@ -62,8 +67,13 @@ get_home_dir ()
struct passwd *entry;

home_dir = (char *)NULL;
+#if defined (HAVE_GETPWUID)
entry = getpwuid (getuid ());
if (entry)
home_dir = entry->pw_dir;
+#endif
+#if defined (HAVE_GETPWENT)
+ endpwent ();
+#endif
return (home_dir);
}
--- lib/tilde/tilde.c
+++ lib/tilde/tilde.c 2011-11-11 13:10:07.375646928 +0000
@@ -61,6 +61,7 @@ extern struct passwd *getpwuid PARAMS((u
# endif
# if defined (HAVE_GETPWNAM)
extern struct passwd *getpwnam PARAMS((const char *));
+extern void endpwent ();
# endif
#endif /* !HAVE_GETPW_DECLS */

++++++ bash-4.2-nscdunmap.dif ++++++
--- shell.c
+++ shell.c 2011-11-11 15:08:39.479158014 +0000
@@ -39,8 +39,8 @@
#include <errno.h>
#include "filecntl.h"
#include <pwd.h>
-
#if defined (HAVE_UNISTD_H)
+# include <sys/types.h>
# include <unistd.h>
#endif

@@ -1630,6 +1630,28 @@ init_interactive_script ()
expand_aliases = interactive_shell = startup_state = 1;
}

+static void
+maybe_unmap_nscd (void)
+{
+ unsigned long start, end, off;
+ char path[PATH_MAX];
+ FILE *maps;
+
+ if (getppid() != 1)
+ return;
+ if ((maps = fopen("/proc/self/maps", "r")) == NULL)
+ return;
+
+ while (fscanf(maps, "%lx-%lx %*s %lx %*x:%*x %*lu %s", &start, &end, &off,
&path[0]) == 4)
+ {
+ if (strncmp(path, "/var/run/nscd/", 14) != 0)
+ continue;
+ munmap((void*)start, end - start);
+ }
+
+ fclose(maps);
+}
+
void
get_current_user_info ()
{
@@ -1655,6 +1677,7 @@ get_current_user_info ()
current_user.home_dir = savestring ("/");
}
endpwent ();
+ maybe_unmap_nscd ();
}
}

++++++ readline-6.2-endpw.dif ++++++
--- lib/readline/complete.c
+++ lib/readline/complete.c 2011-11-11 13:16:05.635147670 +0000
@@ -83,6 +83,7 @@ typedef int QSFUNC ();
defined. */
#if defined (HAVE_GETPWENT) && (!defined (HAVE_GETPW_DECLS) || defined
(_POSIX_SOURCE))
extern struct passwd *getpwent PARAMS((void));
+extern void endpwent ();
#endif /* HAVE_GETPWENT && (!HAVE_GETPW_DECLS || _POSIX_SOURCE) */

/* If non-zero, then this is the address of a function to call when
@@ -2049,12 +2050,12 @@ rl_username_completion_function (text, s
break;
}
#endif
+#if defined (HAVE_GETPWENT)
+ endpwent ();
+#endif

if (entry == 0)
{
-#if defined (HAVE_GETPWENT)
- endpwent ();
-#endif
return ((char *)NULL);
}
else
--- lib/readline/shell.c
+++ lib/readline/shell.c 2011-11-11 13:14:02.683147026 +0000
@@ -61,9 +61,14 @@
#include "rlshell.h"
#include "xmalloc.h"

-#if defined (HAVE_GETPWUID) && !defined (HAVE_GETPW_DECLS)
+#if !defined (HAVE_GETPW_DECLS)
+# if defined (HAVE_GETPWUID)
extern struct passwd *getpwuid PARAMS((uid_t));
-#endif /* HAVE_GETPWUID && !HAVE_GETPW_DECLS */
+# endif
+# if defined (HAVE_GETPWENT)
+extern void endpwent ();
+# endif
+#endif /* !HAVE_GETPW_DECLS */

#ifndef NULL
# define NULL 0
@@ -168,6 +173,9 @@ sh_get_home_dir ()
if (entry)
home_dir = entry->pw_dir;
#endif
+#if defined (HAVE_GETPWENT)
+ endpwent ();
+#endif
return (home_dir);
}

--- lib/readline/tilde.c
+++ lib/readline/tilde.c 2011-11-11 13:09:48.843646721 +0000
@@ -61,6 +61,7 @@ extern struct passwd *getpwuid PARAMS((u
# endif
# if defined (HAVE_GETPWNAM)
extern struct passwd *getpwnam PARAMS((const char *));
+extern void endpwent ();
# endif
#endif /* !HAVE_GETPW_DECLS */

--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@xxxxxxxxxxxx
For additional commands, e-mail: opensuse-commit+help@xxxxxxxxxxxx

< Previous Next >