+++ /dev/null
-Patch for Ubuntu bug #399071
-https://bugs.launchpad.net/ubuntu/+source/pam/+bug/399071
-
-Provide a more dynamic MOTD, based on the short-lived update-motd project.
-
-Authors: Dustin Kirkland <kirkland@canonical.com>
-
-Upstream status: not yet submitted
-
---- Linux-PAM-1.3.0/modules/pam_motd/pam_motd.c~ 2016-05-30 11:18:57.000000000 +0300
-+++ Linux-PAM-1.3.0/modules/pam_motd/pam_motd.c 2016-06-02 16:33:27.912175360 +0300
-@@ -48,13 +48,38 @@
-
- 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);
-+}
-+
- 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 /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
-@@ -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: