summaryrefslogtreecommitdiff
path: root/backport-Explicitly-override-only-newlines.patch
diff options
context:
space:
mode:
Diffstat (limited to 'backport-Explicitly-override-only-newlines.patch')
-rw-r--r--backport-Explicitly-override-only-newlines.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/backport-Explicitly-override-only-newlines.patch b/backport-Explicitly-override-only-newlines.patch
new file mode 100644
index 0000000..a1fc8c6
--- /dev/null
+++ b/backport-Explicitly-override-only-newlines.patch
@@ -0,0 +1,55 @@
+From ffc480c2e93f05266e4b130229877ad13f71a8c0 Mon Sep 17 00:00:00 2001
+From: Samanta Navarro <ferivoz@riseup.net>
+Date: Mon, 30 Jan 2023 11:53:47 +0000
+Subject: [PATCH] Explicitly override only newlines
+
+Override only newlines with '\0' to avoid undesired truncation of
+actual line content.
+
+Signed-off-by: Samanta Navarro <ferivoz@riseup.net>
+---
+ lib/port.c | 6 +++---
+ libmisc/console.c | 3 ++-
+ 2 files changed, 5 insertions(+), 4 deletions(-)
+
+diff --git a/lib/port.c b/lib/port.c
+index 0bea2ef4..90eb1498 100644
+--- a/lib/port.c
++++ b/lib/port.c
+@@ -130,8 +130,8 @@ static struct port *getportent (void)
+ again:
+
+ /*
+- * Get the next line and remove the last character, which
+- * is a '\n'. Lines which begin with '#' are all ignored.
++ * Get the next line and remove optional trailing '\n'.
++ * Lines which begin with '#' are all ignored.
+ */
+
+ if (fgets (buf, (int) sizeof buf, ports) == 0) {
+@@ -149,7 +149,7 @@ static struct port *getportent (void)
+ * TTY devices.
+ */
+
+- buf[strlen (buf) - 1] = 0;
++ buf[strcspn (buf, "\n")] = 0;
+
+ port.pt_names = ttys;
+ for (cp = buf, j = 0; j < PORT_TTY; j++) {
+diff --git a/libmisc/console.c b/libmisc/console.c
+index bc024eba..63d3ceb3 100644
+--- a/libmisc/console.c
++++ b/libmisc/console.c
+@@ -71,7 +71,8 @@ static bool is_listed (const char *cfgin, const char *tty, bool def)
+ */
+
+ while (fgets (buf, (int) sizeof (buf), fp) != NULL) {
+- buf[strlen (buf) - 1] = '\0';
++ /* Remove optional trailing '\n'. */
++ buf[strcspn (buf, "\n")] = '\0';
+ if (strcmp (buf, tty) == 0) {
+ (void) fclose (fp);
+ return true;
+--
+2.27.0
+