[packages/pam] add update dynamic motd patch from debian

glen glen at pld-linux.org
Thu Oct 3 15:00:54 CEST 2013


commit 08e6ed3ddcbc1f5cc3a93ea4b37e20ecc1125588
Author: Elan Ruusamäe <glen at delfi.ee>
Date:   Thu Oct 3 15:56:15 2013 +0300

    add update dynamic motd patch from debian
    
    taken from pam_1.1.3-9.diff.gz

 update-motd.patch | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 183 insertions(+)
---
diff --git a/update-motd.patch b/update-motd.patch
new file mode 100644
index 0000000..3e89e11
--- /dev/null
+++ b/update-motd.patch
@@ -0,0 +1,183 @@
+Patch for Ubuntu bug #399071
+
+Provide a more dynamic MOTD, based on the short-lived update-motd project.
+
+Authors: Dustin Kirkland <kirkland at canonical.com>
+
+Upstream status: not yet submitted
+
+Index: pam.ubuntu/modules/pam_motd/pam_motd.c
+===================================================================
+--- pam.ubuntu.orig/modules/pam_motd/pam_motd.c
++++ pam.ubuntu/modules/pam_motd/pam_motd.c
+@@ -48,14 +48,39 @@
+ 
+ static char default_motd[] = DEFAULT_MOTD;
+ 
++static void display_file(pam_handle_t *pamh, const char *motd_path)
++{
++    int fd;
++    char *mtmp = NULL;
++    while ((fd = open(motd_path, O_RDONLY, 0)) >= 0) {
++	struct stat st;
++	/* fill in message buffer with contents of motd */
++	if ((fstat(fd, &st) < 0) || !st.st_size || st.st_size > 0x10000)
++	    break;
++	if (!(mtmp = malloc(st.st_size+1)))
++	    break;
++	if (pam_modutil_read(fd, mtmp, st.st_size) != st.st_size)
++	    break;
++	if (mtmp[st.st_size-1] == '\n')
++	    mtmp[st.st_size-1] = '\0';
++	else
++	    mtmp[st.st_size] = '\0';
++	pam_info (pamh, "%s", mtmp);
++	break;
++    }
++    _pam_drop (mtmp);
++    if (fd >= 0)
++	close(fd);
++}
++
+ PAM_EXTERN
+ int pam_sm_open_session(pam_handle_t *pamh, int flags,
+ 			int argc, const char **argv)
+ {
+     int retval = PAM_IGNORE;
+-    int fd;
++    int do_update = 1;
+     const char *motd_path = NULL;
+-    char *mtmp = NULL;
++    struct stat st;
+ 
+     if (flags & PAM_SILENT) {
+ 	return retval;
+@@ -73,6 +98,9 @@
+ 			   "motd= specification missing argument - ignored");
+ 	    }
+ 	}
++	else if (!strcmp(*argv,"noupdate")) {
++		do_update = 0;
++	}
+ 	else
+ 	    pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv);
+     }
+@@ -80,34 +108,23 @@
+     if (motd_path == NULL)
+ 	motd_path = default_motd;
+ 
+-    while ((fd = open(motd_path, O_RDONLY, 0)) >= 0) {
+-	struct stat st;
+-
+-	/* fill in message buffer with contents of motd */
+-	if ((fstat(fd, &st) < 0) || !st.st_size || st.st_size > 0x10000)
+-	    break;
+-
+-	if (!(mtmp = malloc(st.st_size+1)))
+-	    break;
+-
+-	if (pam_modutil_read(fd, mtmp, st.st_size) != st.st_size)
+-	    break;
+-
+-	if (mtmp[st.st_size-1] == '\n')
+-	    mtmp[st.st_size-1] = '\0';
+-	else
+-	    mtmp[st.st_size] = '\0';
+-
+-	pam_info (pamh, "%s", mtmp);
+-	break;
++    /* Run the update-motd dynamic motd scripts, outputting to /var/run/motd.
++       If /etc/motd -> /var/run/motd, the displayed MOTD will be dynamic.
++       Otherwise, the admin can force a static MOTD by breaking that symlink
++       and publishing into an /etc/motd text file. */
++    if (do_update && (stat("/etc/update-motd.d", &st) == 0)
++        && S_ISDIR(st.st_mode))
++    {
++	mode_t old_mask = umask(0022);
++	if (!system("/usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin run-parts --lsbsysinit /etc/update-motd.d > /var/run/motd.new"))
++	    rename("/var/run/motd.new", "/var/run/motd");
++	umask(old_mask);
+     }
+ 
+-    _pam_drop (mtmp);
+-
+-    if (fd >= 0)
+-	close(fd);
++    /* Display the updated motd */
++    display_file(pamh, motd_path);
+ 
+-     return retval;
++    return retval;
+ }
+ 
+ 
+Index: pam.ubuntu/modules/pam_motd/pam_motd.8.xml
+===================================================================
+--- pam.ubuntu.orig/modules/pam_motd/pam_motd.8.xml
++++ pam.ubuntu/modules/pam_motd/pam_motd.8.xml
+@@ -52,6 +52,17 @@
+           </para>
+         </listitem>
+       </varlistentry>
++      <varlistentry>
++        <term>
++          <option>noupdate</option>
++        </term>
++        <listitem>
++          <para>
++            Don't run the scripts in <filename>/etc/update-motd.d</filename>
++            to refresh the motd file.
++          </para>
++        </listitem>
++      </varlistentry>
+     </variablelist>
+   </refsect1>
+ 
+Index: pam.ubuntu/modules/pam_motd/pam_motd.8
+===================================================================
+--- pam.ubuntu.orig/modules/pam_motd/pam_motd.8
++++ pam.ubuntu/modules/pam_motd/pam_motd.8
+@@ -2,12 +2,12 @@
+ .\"     Title: pam_motd
+ .\"    Author: [see the "AUTHOR" section]
+ .\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
+-.\"      Date: 06/04/2011
++.\"      Date: 10/30/2011
+ .\"    Manual: Linux-PAM Manual
+ .\"    Source: Linux-PAM Manual
+ .\"  Language: English
+ .\"
+-.TH "PAM_MOTD" "8" "06/04/2011" "Linux-PAM Manual" "Linux\-PAM Manual"
++.TH "PAM_MOTD" "8" "10/30/2011" "Linux-PAM Manual" "Linux\-PAM Manual"
+ .\" -----------------------------------------------------------------
+ .\" * Define some portability stuff
+ .\" -----------------------------------------------------------------
+@@ -45,6 +45,13 @@
+ /path/filename
+ file is displayed as message of the day\&.
+ .RE
++.PP
++\fBnoupdate\fR
++.RS 4
++Don\*(Aqt run the scripts in
++/etc/update\-motd\&.d
++to refresh the motd file\&.
++.RE
+ .SH "MODULE TYPES PROVIDED"
+ .PP
+ Only the
+Index: pam.ubuntu/modules/pam_motd/README
+===================================================================
+--- pam.ubuntu.orig/modules/pam_motd/README
++++ pam.ubuntu/modules/pam_motd/README
+@@ -14,6 +14,10 @@
+ 
+     The /path/filename file is displayed as message of the day.
+ 
++noupdate
++
++    Don't run the scripts in /etc/update-motd.d to refresh the motd file.
++
+ EXAMPLES
+ 
+ The suggested usage for /etc/pam.d/login is:
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/pam.git/commitdiff/3c20be82f7c9cffae8b4c8d5b635d3ae26e0e909



More information about the pld-cvs-commit mailing list