summaryrefslogtreecommitdiff
path: root/debian/patches-applied/update-motd
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches-applied/update-motd')
-rw-r--r--debian/patches-applied/update-motd115
1 files changed, 28 insertions, 87 deletions
diff --git a/debian/patches-applied/update-motd b/debian/patches-applied/update-motd
index e649a2f4..3d49d682 100644
--- a/debian/patches-applied/update-motd
+++ b/debian/patches-applied/update-motd
@@ -10,49 +10,19 @@ Index: pam/modules/pam_motd/pam_motd.c
===================================================================
--- pam.orig/modules/pam_motd/pam_motd.c
+++ pam/modules/pam_motd/pam_motd.c
-@@ -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,
+@@ -101,8 +101,10 @@
int argc, const char **argv)
{
int retval = PAM_IGNORE;
-- int fd;
+ int do_update = 1;
const char *motd_path = NULL;
-- char *mtmp = NULL;
+ const char *motd_dir_path = NULL;
+ struct stat st;
if (flags & PAM_SILENT) {
return retval;
-@@ -72,6 +97,9 @@
- "motd= specification missing argument - ignored");
+@@ -131,6 +133,9 @@
+ "motd_dir= specification missing argument - ignored");
}
}
+ else if (!strcmp(*argv,"noupdate")) {
@@ -61,30 +31,10 @@ Index: pam/modules/pam_motd/pam_motd.c
else
pam_syslog(pamh, LOG_ERR, "unknown option: %s", *argv);
}
-@@ -79,34 +107,23 @@
- if (motd_path == NULL)
- motd_path = default_motd;
+@@ -140,6 +145,19 @@
+ motd_dir_path = default_motd_dir;
+ }
-- 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 /run/motd.dynamic.
+ This will be displayed only when calling pam_motd with
+ motd=/run/motd.dynamic; current /etc/pam.d/login and /etc/pam.d/sshd
@@ -92,29 +42,20 @@ Index: pam/modules/pam_motd/pam_motd.c
+ 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 > /run/motd.dynamic.new"))
-+ rename("/run/motd.dynamic.new", "/run/motd.dynamic");
-+ umask(old_mask);
- }
-
-- _pam_drop (mtmp);
--
-- if (fd >= 0)
-- close(fd);
-+ /* Display the updated motd */
-+ display_file(pamh, motd_path);
-
-- return retval;
-+ return retval;
- }
++ 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 > /run/motd.dynamic.new"))
++ rename("/run/motd.dynamic.new", "/run/motd.dynamic");
++ umask(old_mask);
++ }
++
+ if (motd_path != NULL) {
+ int fd = open(motd_path, O_RDONLY, 0);
- /* end of module definition */
Index: pam/modules/pam_motd/pam_motd.8.xml
===================================================================
--- pam.orig/modules/pam_motd/pam_motd.8.xml
+++ pam/modules/pam_motd/pam_motd.8.xml
-@@ -52,6 +52,17 @@
+@@ -63,6 +63,17 @@
</para>
</listitem>
</varlistentry>
@@ -130,33 +71,33 @@ Index: pam/modules/pam_motd/pam_motd.8.xml
+ </listitem>
+ </varlistentry>
</variablelist>
- </refsect1>
-
+ <para>
+ When no options are given, the default is to display both
Index: pam/modules/pam_motd/pam_motd.8
===================================================================
--- pam.orig/modules/pam_motd/pam_motd.8
+++ pam/modules/pam_motd/pam_motd.8
-@@ -45,6 +45,13 @@
- /path/filename
- file is displayed as message of the day\&.
+@@ -53,6 +53,13 @@
+ directory is scanned and each file contained inside of it is displayed\&.
.RE
-+.PP
+ .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
++.PP
+ When no options are given, the default is to display both
+ /etc/motd
+ and the contents of
Index: pam/modules/pam_motd/README
===================================================================
--- pam.orig/modules/pam_motd/README
+++ pam/modules/pam_motd/README
-@@ -14,6 +14,10 @@
-
- The /path/filename file is displayed as message of the day.
+@@ -23,6 +23,10 @@
+ contents of /etc/motd.d. Specifying either option (or both) will disable this
+ default behavior.
+noupdate
+