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 "[email protected]"

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 - [email protected]
+
+- 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 - [email protected]
+
+- 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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to