Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-Mail-Sendmail for 
openSUSE:Factory checked in at 2026-11-07 23:33:26
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-Mail-Sendmail (Old)
 and      /work/SRC/openSUSE:Factory/.perl-Mail-Sendmail.new.3759290 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-Mail-Sendmail"

Sat Nov  7 23:33:26 2026 rev:23 rq:1396032 version:0.830.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-Mail-Sendmail/perl-Mail-Sendmail.changes    
2025-07-22 12:20:16.540073382 +0200
+++ 
/work/SRC/openSUSE:Factory/.perl-Mail-Sendmail.new.3759290/perl-Mail-Sendmail.changes
       2026-11-07 23:34:11.593464599 +0100
@@ -1,0 +2,14 @@
+Sun Jul  5 08:16:06 UTC 2026 - Tina Müller <[email protected]>
+
+- updated to 0.830.0 (0.83)
+   see /usr/share/doc/packages/perl-Mail-Sendmail/Changes
+
+  0.83 2026-07-04 NEILB
+      - strip CR/LF from header values, to prevent insertion of rogue headers.
+        Deals with issue in CVE-2026-13092. Pull request from Olaf Alders++.
+      - Tried using [PkgVersion] so $VERSION would be auto managed, but
+        caused issues testing as the code expects $VERSION to be there 
pre-build.
+      - switched to a new test Sendmail server for t/original.t, as the old
+        one was no longer accepting connections.
+
+-------------------------------------------------------------------

Old:
----
  Mail-Sendmail-0.82.tar.gz

New:
----
  Mail-Sendmail-0.83.tar.gz
  README.md
  _scmsync.obsinfo
  build.specials.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ perl-Mail-Sendmail.spec ++++++
--- /var/tmp/diff_new_pack.6EA0uE/_old  2026-11-07 23:34:13.674550587 +0100
+++ /var/tmp/diff_new_pack.6EA0uE/_new  2026-11-07 23:34:13.678550753 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package perl-Mail-Sendmail
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,23 +18,25 @@
 
 %define cpan_name Mail-Sendmail
 Name:           perl-Mail-Sendmail
-Version:        0.820.0
+Version:        0.830.0
 Release:        0
-# 0.82 -> normalize -> 0.820.0
-%define cpan_version 0.82
+# 0.83 -> normalize -> 0.830.0
+%define cpan_version 0.83
 License:        Artistic-1.0 OR GPL-1.0-or-later
 Summary:        Simple platform independent mailer
 URL:            https://metacpan.org/release/%{cpan_name}
 Source0:        
https://cpan.metacpan.org/authors/id/N/NE/NEILB/%{cpan_name}-%{cpan_version}.tar.gz
 Source1:        cpanspec.yml
+Source100:      README.md
 BuildArch:      noarch
 BuildRequires:  perl
 BuildRequires:  perl-macros
 BuildRequires:  perl(Sys::Hostname::Long)
+BuildRequires:  perl(Test::TCP)
 BuildRequires:  perl(parent)
 Requires:       perl(Sys::Hostname::Long)
 Requires:       perl(parent)
-Provides:       perl(Mail::Sendmail) = 0.800.0
+Provides:       perl(Mail::Sendmail) = %{version}
 %undefine       __perllib_provides
 %{perl_requires}
 # MANUAL BEGIN

++++++ Mail-Sendmail-0.82.tar.gz -> Mail-Sendmail-0.83.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mail-Sendmail-0.82/Changes 
new/Mail-Sendmail-0.83/Changes
--- old/Mail-Sendmail-0.82/Changes      2025-07-14 14:41:56.000000000 +0200
+++ new/Mail-Sendmail-0.83/Changes      2026-07-04 11:10:21.000000000 +0200
@@ -1,5 +1,13 @@
 Revision history for Perl module Mail::Sendmail
 
+0.83 2026-07-04 NEILB
+    - strip CR/LF from header values, to prevent insertion of rogue headers.
+      Deals with issue in CVE-2026-13092. Pull request from Olaf Alders++.
+    - Tried using [PkgVersion] so $VERSION would be auto managed, but
+      caused issues testing as the code expects $VERSION to be there pre-build.
+    - switched to a new test Sendmail server for t/original.t, as the old
+      one was no longer accepting connections.
+
 0.82 2025-07-14 NEILB
     - Improvement from Pete Houston to use Sys::Hostname::Long
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mail-Sendmail-0.82/MANIFEST 
new/Mail-Sendmail-0.83/MANIFEST
--- old/Mail-Sendmail-0.82/MANIFEST     2025-07-14 14:41:56.000000000 +0200
+++ new/Mail-Sendmail-0.83/MANIFEST     2026-07-04 11:10:21.000000000 +0200
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::Manifest 
v6.032.
+# This file was automatically generated by Dist::Zilla::Plugin::Manifest v6.037
 Changes
 LICENSE
 MANIFEST
@@ -9,4 +9,6 @@
 Todo
 dist.ini
 lib/Mail/Sendmail.pm
+t/crlf_injection.t
+t/lib/FakeSMTP.pm
 t/original.t
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mail-Sendmail-0.82/META.json 
new/Mail-Sendmail-0.83/META.json
--- old/Mail-Sendmail-0.82/META.json    2025-07-14 14:41:56.000000000 +0200
+++ new/Mail-Sendmail-0.83/META.json    2026-07-04 11:10:21.000000000 +0200
@@ -4,7 +4,7 @@
       "Milivoj Ivkovic <[email protected]>"
    ],
    "dynamic_config" : 0,
-   "generated_by" : "Dist::Zilla version 6.032, CPAN::Meta::Converter version 
2.150010",
+   "generated_by" : "Dist::Zilla version 6.037, CPAN::Meta::Converter version 
2.150010",
    "license" : [
       "perl_5"
    ],
@@ -34,6 +34,15 @@
             "vars" : "0",
             "warnings" : "0"
          }
+      },
+      "test" : {
+         "requires" : {
+            "File::Temp" : "0",
+            "IO::Socket::INET" : "0",
+            "Test::More" : "0",
+            "Test::TCP" : "0",
+            "lib" : "0"
+         }
       }
    },
    "release_status" : "stable",
@@ -45,7 +54,7 @@
          "web" : "https://github.com/neilb/Mail-Sendmail";
       }
    },
-   "version" : "0.82",
+   "version" : "0.83",
    "x_generated_by_perl" : "v5.32.1",
    "x_serialization_backend" : "Cpanel::JSON::XS version 4.38",
    "x_spdx_expression" : "Artistic-1.0-Perl OR GPL-1.0-or-later"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mail-Sendmail-0.82/META.yml 
new/Mail-Sendmail-0.83/META.yml
--- old/Mail-Sendmail-0.82/META.yml     2025-07-14 14:41:56.000000000 +0200
+++ new/Mail-Sendmail-0.83/META.yml     2026-07-04 11:10:21.000000000 +0200
@@ -2,11 +2,16 @@
 abstract: 'Simple platform independent mailer'
 author:
   - 'Milivoj Ivkovic <[email protected]>'
-build_requires: {}
+build_requires:
+  File::Temp: '0'
+  IO::Socket::INET: '0'
+  Test::More: '0'
+  Test::TCP: '0'
+  lib: '0'
 configure_requires:
   ExtUtils::MakeMaker: '0'
 dynamic_config: 0
-generated_by: 'Dist::Zilla version 6.032, CPAN::Meta::Converter version 
2.150010'
+generated_by: 'Dist::Zilla version 6.037, CPAN::Meta::Converter version 
2.150010'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
@@ -28,7 +33,7 @@
 resources:
   homepage: https://github.com/neilb/Mail-Sendmail
   repository: https://github.com/neilb/Mail-Sendmail.git
-version: '0.82'
+version: '0.83'
 x_generated_by_perl: v5.32.1
 x_serialization_backend: 'YAML::Tiny version 1.73'
 x_spdx_expression: 'Artistic-1.0-Perl OR GPL-1.0-or-later'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mail-Sendmail-0.82/Makefile.PL 
new/Mail-Sendmail-0.83/Makefile.PL
--- old/Mail-Sendmail-0.82/Makefile.PL  2025-07-14 14:41:56.000000000 +0200
+++ new/Mail-Sendmail-0.83/Makefile.PL  2026-07-04 11:10:21.000000000 +0200
@@ -1,4 +1,4 @@
-# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker 
v6.032.
+# This file was automatically generated by Dist::Zilla::Plugin::MakeMaker 
v6.037
 use strict;
 use warnings;
 
@@ -29,7 +29,14 @@
     "vars" => 0,
     "warnings" => 0
   },
-  "VERSION" => "0.82",
+  "TEST_REQUIRES" => {
+    "File::Temp" => 0,
+    "IO::Socket::INET" => 0,
+    "Test::More" => 0,
+    "Test::TCP" => 0,
+    "lib" => 0
+  },
+  "VERSION" => "0.83",
   "test" => {
     "TESTS" => "t/*.t"
   }
@@ -39,11 +46,16 @@
 my %FallbackPrereqs = (
   "Digest::MD5" => 0,
   "Exporter" => 0,
+  "File::Temp" => 0,
+  "IO::Socket::INET" => 0,
   "MIME::Base64" => 0,
   "Socket" => 0,
   "Sys::Hostname" => 0,
   "Sys::Hostname::Long" => 0,
+  "Test::More" => 0,
+  "Test::TCP" => 0,
   "Time::Local" => 0,
+  "lib" => 0,
   "parent" => 0,
   "strict" => 0,
   "vars" => 0,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mail-Sendmail-0.82/dist.ini 
new/Mail-Sendmail-0.83/dist.ini
--- old/Mail-Sendmail-0.82/dist.ini     2025-07-14 14:41:56.000000000 +0200
+++ new/Mail-Sendmail-0.83/dist.ini     2026-07-04 11:10:21.000000000 +0200
@@ -4,7 +4,7 @@
 copyright_holder = Milivoj Ivkovic
 copyright_year   = 1998
 
-version = 0.82
+version = 0.83
 
 [@Filter]
 -bundle = @Basic
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mail-Sendmail-0.82/lib/Mail/Sendmail.pm 
new/Mail-Sendmail-0.83/lib/Mail/Sendmail.pm
--- old/Mail-Sendmail-0.82/lib/Mail/Sendmail.pm 2025-07-14 14:41:56.000000000 
+0200
+++ new/Mail-Sendmail-0.83/lib/Mail/Sendmail.pm 2026-07-04 11:10:21.000000000 
+0200
@@ -10,9 +10,9 @@
 
 =cut
 
-require 5.006;
+our $VERSION = "0.83";
 
-our $VERSION = "0.80";
+require 5.006;
 
 use strict;
 use warnings;
@@ -249,9 +249,18 @@
         $k =~ s/-(.)/"-" . uc($1)/ge;
         $mail{$k} = shift @_;
         if ($k !~ /^(Message|Body|Text)$/i) {
-            # normalize possible line endings in headers
-            $mail{$k} =~ s/\015\012?/\012/go;
-            $mail{$k} =~ s/\012/$CRLF/go;
+            # Strip any CR/LF characters from header values to prevent
+            # CRLF injection (SMTP header injection).  Attacker-controlled
+            # header values containing "\nBcc: [email protected]" would
+            # otherwise inject new headers or body content.
+            # See CWE-93 (Improper Neutralization of CRLF Sequences) and
+            # the equivalent fixes in Email::MIME (CVE-2024-4140) and
+            # many other mail libraries.
+            if ($mail{$k} =~ /[\015\012]/) {
+                warn "Mail::Sendmail: stripping CR/LF from $k header to "
+                   . "prevent CRLF injection\n";
+                $mail{$k} =~ s/[\015\012]+//g;
+            }
         }
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mail-Sendmail-0.82/t/crlf_injection.t 
new/Mail-Sendmail-0.83/t/crlf_injection.t
--- old/Mail-Sendmail-0.82/t/crlf_injection.t   1970-01-01 01:00:00.000000000 
+0100
+++ new/Mail-Sendmail-0.83/t/crlf_injection.t   2026-07-04 11:10:21.000000000 
+0200
@@ -0,0 +1,43 @@
+#!/usr/bin/perl -w
+
+# Offline test: header values must not be able to inject extra SMTP
+# headers via embedded CR/LF (header injection).  FakeSMTP runs a local
+# throwaway SMTP server, captures the DATA section, and we inspect the
+# headers that were actually put on the wire.
+
+use strict;
+use warnings;
+
+use lib 't/lib';
+use Test::More;
+use FakeSMTP qw(capture_sent);
+
+subtest 'newline in a header value cannot inject a new header' => sub {
+    my $data = capture_sent(
+        From    => '[email protected]',
+        To      => '[email protected]',
+        Subject => "Hello\nBcc: attacker\@example.net",
+        Message => "body\n",
+    );
+
+    my ($headers) = split /\r?\n\r?\n/, $data, 2;
+    unlike $headers, qr/^Bcc:/im,
+        'injected Bcc does not appear as a header line';
+};
+
+subtest 'legitimate multi-line message bodies are preserved' => sub {
+    my $data = capture_sent(
+        From    => '[email protected]',
+        To      => '[email protected]',
+        Subject => 'Plain subject',
+        Message => "Line one\nLine two\n",
+    );
+
+    # Assert the separator between the lines survived (as SMTP CRLF), not
+    # just that both lines appear somewhere: "Line oneLine two" must fail.
+    my (undef, $body) = split /\r\n\r\n/, $data, 2;
+    like $body, qr/\ALine one\r\nLine two\r\n/,
+        'body lines preserved with their line breaks intact';
+};
+
+done_testing;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mail-Sendmail-0.82/t/lib/FakeSMTP.pm 
new/Mail-Sendmail-0.83/t/lib/FakeSMTP.pm
--- old/Mail-Sendmail-0.82/t/lib/FakeSMTP.pm    1970-01-01 01:00:00.000000000 
+0100
+++ new/Mail-Sendmail-0.83/t/lib/FakeSMTP.pm    2026-07-04 11:10:21.000000000 
+0200
@@ -0,0 +1,85 @@
+package FakeSMTP;
+
+# Test helper: run Mail::Sendmail's sendmail() against a throwaway local
+# SMTP server (no real network, no real mail) and return the raw DATA
+# payload the client put on the wire, so tests can inspect exactly what
+# was transmitted.
+#
+# The server lifecycle (fork, ephemeral port, readiness wait, cleanup) is
+# handled by Test::TCP; we only supply the tiny SMTP dialog.
+
+use strict;
+use warnings;
+
+use Exporter 'import';
+use File::Temp ();
+use IO::Socket::INET ();
+use Mail::Sendmail ();
+use Test::TCP ();
+
+our @EXPORT = qw(capture_sent);
+
+# capture_sent(%mail) -> the raw DATA payload (headers + body) that
+# sendmail() transmitted for %mail.
+sub capture_sent {
+    my %mail = @_;
+
+    # The server runs in a child process; it hands the captured payload
+    # back through this temp file.  Kept in scope for the whole sub so
+    # File::Temp does not unlink it before we read it.
+    my $capture = File::Temp->new;
+    my $capture_path = $capture->filename;
+
+    my $server = Test::TCP->new( code => sub { _serve(shift, $capture_path) } 
);
+
+    # Don't MIME-encode the body, so the captured payload is predictable.
+    local $Mail::Sendmail::mailcfg{mime} = 0;
+    $mail{Smtp} = '127.0.0.1:' . $server->port;
+    Mail::Sendmail::sendmail(%mail);
+
+    open my $fh, '<', $capture_path or die "no captured payload: $!";
+    local $/;
+    my $data = <$fh>;
+    close $fh;
+    return $data;
+}
+
+# The fake SMTP server: accept a connection, answer just enough of the
+# dialog to reach DATA, capture the payload, then acknowledge.
+sub _serve {
+    my ($port, $capture_path) = @_;
+
+    my $listen = IO::Socket::INET->new(
+        LocalAddr => '127.0.0.1',
+        LocalPort => $port,
+        Listen    => 5,
+        ReuseAddr => 1,
+        Proto     => 'tcp',
+    ) or die "fake SMTP listen failed: $!";
+
+    while (my $client = $listen->accept) {
+        $client->autoflush(1);
+        print {$client} "220 fake ESMTP\r\n";
+        my $data = '';
+        while (my $line = <$client>) {
+            if ($line =~ /^DATA/i) {
+                print {$client} "354 go ahead\r\n";
+                while (my $dl = <$client>) {
+                    last if $dl eq ".\r\n" or $dl eq ".\n";
+                    $data .= $dl;
+                }
+                # Record the payload BEFORE the 250 that releases the
+                # client, so the parent can rely on it being complete
+                # once sendmail() returns.
+                open my $fh, '>', $capture_path or die "capture: $!";
+                print {$fh} $data;
+                close $fh;
+                print {$client} "250 queued\r\n";
+            }
+            elsif ($line =~ /^QUIT/i) { print {$client} "221 bye\r\n"; last }
+            else                      { print {$client} "250 ok\r\n" }  # 
greeting/EHLO/MAIL/RCPT
+        }
+    }
+}
+
+1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Mail-Sendmail-0.82/t/original.t 
new/Mail-Sendmail-0.83/t/original.t
--- old/Mail-Sendmail-0.82/t/original.t 2025-07-14 14:41:56.000000000 +0200
+++ new/Mail-Sendmail-0.83/t/original.t 2026-07-04 11:10:21.000000000 +0200
@@ -14,7 +14,7 @@
 
 # if you want to get a copy of the test mail, you need to specify your
 # own server here, by name or IP address
-$server = 'mail.alma.ch';
+$server = 'smtp.freesmtpservers.com';
 #$server = 'my.usual.mail.server';
 
 BEGIN { $| = 1; print "1..2\n"; }

++++++ README.md ++++++

## Build Results

Current state of perl in openSUSE:Factory is

![Factory build 
results](https://br.opensuse.org/status/openSUSE:Factory/perl-Mail-Sendmail/standard)

The current state of perl in the devel project build (devel:languages:perl)

![Devel project build 
results](https://br.opensuse.org/status/devel:languages:perl/perl-Mail-Sendmail)



++++++ _scmsync.obsinfo ++++++
mtime: 1783239366
commit: 19a8149815b0bf65ded100045bd992edb5738140c326d3aeb20d827517085407
url: https://src.opensuse.org/perl/perl-Mail-Sendmail
revision: 19a8149815b0bf65ded100045bd992edb5738140c326d3aeb20d827517085407
projectscmsync: https://src.opensuse.org/perl/_ObsPrj

++++++ build.specials.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.gitignore new/.gitignore
--- old/.gitignore      1970-01-01 01:00:00.000000000 +0100
+++ new/.gitignore      2026-07-05 10:16:06.000000000 +0200
@@ -0,0 +1 @@
+.osc

Reply via email to