[tin-dev] [ANNOUNCE] tin 2.6.4 released

Urs Janßen urs at tin.org
Fri Jan 3 13:21:40 CET 2025


In Urs Janßen <urs at tin.org> wrote:
> Just pushed the x-mas release with the following notable changes:

This fixes the fallback to user at host when mail_address is unset (and no
from is set via attributes).

=== modified file 'src/header.c'
--- old/src/header.c	2024-12-15 14:03:16 +0000
+++ new/src/header.c	2025-01-03 07:32:02 +0000
@@ -288,16 +288,14 @@
 {
 	const char *fromhost = domain_name;
 
-	if (thisgrp && thisgrp->attribute->from && *thisgrp->attribute->from) {
+	if (thisgrp && thisgrp->attribute->from && *thisgrp->attribute->from && strchr(*thisgrp->attribute->from, '@'))
 		strcpy(from_name, *thisgrp->attribute->from);
-		return;
-	}
-
-	sprintf(from_name, ((strpbrk(get_full_name(), "!()<>@,;:\\\".[]")) ? "\"%s\" <%s@%s>" : "%s <%s@%s>"), BlankIfNull(get_full_name()), userid, BlankIfNull(fromhost));
+	else
+		sprintf(from_name, ((strpbrk(get_full_name(), "!()<>@,;:\\\".[]")) ? "\"%s\" <%s@%s>" : "%s <%s@%s>"), BlankIfNull(get_full_name()), userid, BlankIfNull(fromhost));
 
 #ifdef DEBUG
 	if (debug & DEBUG_MISC)
-		error_message(2, "FROM=[%s] USER=[%s] HOST=[%s] NAME=[%s]", from_name, userid, domain_name, BlankIfNull(get_full_name()));
+		error_message(2, "FROM=[%s] USER=[%s] HOST=[%s] NAME=[%s]", from_name, userid, BlankIfNull(fromhost), BlankIfNull(get_full_name()));
 #endif /* DEBUG */
 }
 

=== modified file 'src/pgp.c'
--- old/src/pgp.c	2024-11-25 19:56:05 +0000
+++ new/src/pgp.c	2025-01-03 03:28:54 +0000
@@ -264,7 +264,7 @@
 	/*
 	 * <mailfrom> is valid only when signing and a local address exists
 	 */
-	if (CURR_GROUP.attribute->from != NULL && *CURR_GROUP.attribute->from)
+	if (CURR_GROUP.attribute->from != NULL && *CURR_GROUP.attribute->from && strchr(*CURR_GROUP.attribute->from, '@'))
 		strip_name(*CURR_GROUP.attribute->from, mailfrom);
 
 	switch (what) {
@@ -305,7 +305,7 @@
 	char cmd[LEN], buf[LEN];
 	char keyfile[PATH_LEN], tmp[PATH_LEN];
 
-	if (CURR_GROUP.attribute->from != NULL && *CURR_GROUP.attribute->from && **CURR_GROUP.attribute->from)
+	if (CURR_GROUP.attribute->from != NULL && *CURR_GROUP.attribute->from && strchr(*CURR_GROUP.attribute->from, '@'))
 		strip_name(*CURR_GROUP.attribute->from, buf);
 	else /* FIXME: avoid hardcoded length */
 		snprintf(buf, sizeof(buf), "%.*s@%.765s", LOGIN_NAME_MAX - 1, userid, BlankIfNull(get_host_name()));

=== modified file 'src/post.c'
--- old/src/post.c	2024-12-22 17:30:48 +0000
+++ new/src/post.c	2025-01-03 12:19:25 +0000
@@ -2899,13 +2899,13 @@
 #	endif /* HAVE_CHMOD */
 #endif /* HAVE_FCHMOD */
 
-	get_from_name(from_name, group);
 #ifdef FORGERY
 	if ((tmp2 = make_path_header())) {
 		msg_add_header("Path", tmp2);
 		free(tmp2);
 	}
 #endif /* FORGERY */
+	get_from_name(from_name, group);
 	msg_add_header("From", from_name);
 	msg_add_header("Subject", tinrc.default_post_subject);
 
@@ -3686,14 +3686,14 @@
 #	endif /* HAVE_CHMOD */
 #endif /* HAVE_FCHMOD */
 
+#ifdef FORGERY
+	if ((p = make_path_header())) {
+		msg_add_header("Path", p);
+		free(p);
+	}
+#endif /* FORGERY */
 	group = group_find(groupname, FALSE);
 	get_from_name(from_name, group);
-#ifdef FORGERY
-	if ((p = make_path_header())) {
-		msg_add_header("Path", p);
-		free(p);
-	}
-#endif /* FORGERY */
 	msg_add_header("From", from_name);
 
 	{
@@ -3903,7 +3903,7 @@
 		char from_buf[HEADER_LEN];
 		char *from_address;
 
-		if (curr_group && curr_group->attribute && curr_group->attribute->from && *curr_group->attribute->from)
+		if (curr_group && curr_group->attribute && curr_group->attribute->from && *curr_group->attribute->from && strchr(*curr_group->attribute->from, '@'))
 			from_address = *curr_group->attribute->from;
 		else /* i.e. called from select.c without any groups */
 			from_address = tinrc.mail_address;
@@ -3913,8 +3913,7 @@
 			from_address = &from_buf[0];
 		} /* from_address is now always a valid pointer to a string */
 
-		if (*from_address)
-			msg_add_header("From", from_address);
+		msg_add_header("From", from_address);
 
 		msg_add_header("To", to);
 		msg_add_header("Subject", subject);
@@ -5434,9 +5433,9 @@
 	snprintf(outfile, sizeof(outfile), "%s.%ld", infile, (long) process_id);
 	if ((fp_out = fopen(outfile, "w")) != NULL) {
 		strcpy(from_name, "From: ");
-		if (tinrc.mail_address && *tinrc.mail_address) { /* FIXME: avoid hardcoded length */
+		if (tinrc.mail_address && *tinrc.mail_address) /* FIXME: avoid hardcoded length */
 			snprintf(from_name + 6, sizeof(from_name) - 7, "%.1016s", tinrc.mail_address);
-		} else
+		else
 			get_from_name(from_name + 6, (struct t_group *) 0);
 
 #	ifdef DEBUG




More information about the tin-dev mailing list