Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package perl-DBI for openSUSE:Factory 
checked in at 2026-07-17 18:47:33
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/perl-DBI (Old)
 and      /work/SRC/openSUSE:Factory/.perl-DBI.new.24530 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "perl-DBI"

Fri Jul 17 18:47:33 2026 rev:59 rq:1366351 version:1.651.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/perl-DBI/perl-DBI.changes        2026-07-09 
22:18:36.656556600 +0200
+++ /work/SRC/openSUSE:Factory/.perl-DBI.new.24530/perl-DBI.changes     
2026-07-17 18:48:14.726754393 +0200
@@ -1,0 +2,14 @@
+Wed Jul 15 07:25:08 UTC 2026 - Tina Müller <[email protected]>
+
+- updated to 1.651.0 (1.651)
+   see /usr/share/doc/packages/perl-DBI/ChangeLog
+
+  1.651 - 2026-07-14, H.Merijn Brand & Robert Rothenberg
+      * Fix inverted comparisons for strings in DBI::SQL::Nano  
(CVE-2026-15043) bsc#1271399
+      * Document that IS NULL matches empty strings in DBI::SQL::Nano
+      * Fix DBD::File to ensure that the table is not a symlink outside of 
f_dir (CVE-2026-15392) bsc#1271629
+      * Fix an out-of-bounds error when a statement handle has no fields but 
the source row is not empty (CVE-2026-60082) bsc#1271459
+      * Add an overridable upper bound $MAX_PATH_DEPTH for DBI::ProfileData 
(CVE-2026-60081) bsc#1271458
+      * *** WARNING: Next release will require perl-5.12 ***
+
+-------------------------------------------------------------------

Old:
----
  DBI-1.650.tgz

New:
----
  DBI-1.651.tgz

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

Other differences:
------------------
++++++ perl-DBI.spec ++++++
--- /var/tmp/diff_new_pack.H9xVU7/_old  2026-07-17 18:48:15.774789729 +0200
+++ /var/tmp/diff_new_pack.H9xVU7/_new  2026-07-17 18:48:15.786790133 +0200
@@ -18,10 +18,10 @@
 
 %define cpan_name DBI
 Name:           perl-DBI
-Version:        1.650.0
+Version:        1.651.0
 Release:        0
-# 1.650 -> normalize -> 1.650.0
-%define cpan_version 1.650
+# 1.651 -> normalize -> 1.651.0
+%define cpan_version 1.651
 License:        Artistic-1.0 OR GPL-1.0-or-later
 Summary:        Database independent interface for Perl
 URL:            https://metacpan.org/release/%{cpan_name}

++++++ DBI-1.650.tgz -> DBI-1.651.tgz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/ChangeLog new/DBI-1.651/ChangeLog
--- old/DBI-1.650/ChangeLog     2026-07-06 11:43:59.000000000 +0200
+++ new/DBI-1.651/ChangeLog     2026-07-14 11:25:11.000000000 +0200
@@ -1,3 +1,11 @@
+1.651 - 2026-07-14, H.Merijn Brand & Robert Rothenberg
+    * Fix inverted comparisons for strings in DBI::SQL::Nano  (CVE-2026-15043)
+    * Document that IS NULL matches empty strings in DBI::SQL::Nano
+    * Fix DBD::File to ensure that the table is not a symlink outside of f_dir 
(CVE-2026-15392)
+    * Fix an out-of-bounds error when a statement handle has no fields but the 
source row is not empty (CVE-2026-60082)
+    * Add an overridable upper bound $MAX_PATH_DEPTH for DBI::ProfileData 
(CVE-2026-60081)
+    * *** WARNING: Next release will require perl-5.12 ***
+
 1.650 - 2026-07-06, H.Merijn Brand & Robert Rothenberg
     * Set a hard limit of 99999 on '?' placeholders (CVE-2026-14739)
     * Fix out-of-bounds read in preparse of SQL that starts with a comment 
(CVE-2026-14740)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/DBI.pm new/DBI-1.651/DBI.pm
--- old/DBI-1.650/DBI.pm        2026-07-05 13:53:14.000000000 +0200
+++ new/DBI-1.651/DBI.pm        2026-07-13 10:42:52.000000000 +0200
@@ -16,7 +16,7 @@
 
 our ($XS_VERSION, $VERSION);
 BEGIN {
-$VERSION = "1.650"; # ==> ALSO update the version in the pod text below!
+$VERSION = "1.651"; # ==> ALSO update the version in the pod text below!
 $XS_VERSION = $VERSION;
 $VERSION =~ tr/_//d;
 }
@@ -148,7 +148,7 @@
 
 =head2 NOTES
 
-This is the DBI specification that corresponds to DBI version 1.650
+This is the DBI specification that corresponds to DBI version 1.651
 (see L<DBI::Changes> for details).
 
 The DBI is evolving at a steady pace, so it's good to check that
@@ -405,8 +405,8 @@
 
     common => {                # Interface methods common to all DBI handle 
classes
        'DESTROY'       => { O=>0x004|0x10000 },
-       'CLEAR'         => $keeperr,
-       'EXISTS'        => $keeperr,
+       'CLEAR'         => $keeperr,
+       'EXISTS'        => $keeperr,
        'FETCH'         => { O=>0x0404 },
        'FETCH_many'    => { O=>0x0404 },
        'FIRSTKEY'      => $keeperr,
@@ -414,12 +414,12 @@
        'STORE'         => { O=>0x0418 | 0x4 },
        'DELETE'        => { O=>0x0404 },
        can             => { O=>0x0100 }, # special case, see dispatch
-       debug           => { U =>[1,2,'[$debug_level]'],        O=>0x0004 }, # 
old name for trace
-       dump_handle     => { U =>[1,3,'[$message [, $level]]'], O=>0x0004 },
+       debug           => { U =>[1,2,'[$debug_level]'],        O=>0x0004 }, # 
old name for trace
+       dump_handle     => { U =>[1,3,'[$message [, $level]]'], O=>0x0004 },
        err             => $keeperr,
        errstr          => $keeperr,
        state           => $keeperr,
-       func            => { O=>0x0006  },
+       func            => { O=>0x0006  },
        parse_trace_flag   => { U =>[2,2,'$name'],      O=>0x0404, T=>8 },
        parse_trace_flags  => { U =>[2,2,'$flags'],     O=>0x0404, T=>8 },
        private_data    => { U =>[1,1],                 O=>0x0004 },
@@ -441,15 +441,15 @@
     db => {            # Database Session Class Interface
        data_sources    => { U =>[1,2,'[\%attr]' ], O=>0x0200 },
        take_imp_data   => { U =>[1,1], O=>0x10000 },
-       clone           => { U =>[1,2,'[\%attr]'], T=>0x200 },
-       connected       => { U =>[1,0], O => 0x0004, T=>0x200, H=>3 },
-       begin_work      => { U =>[1,2,'[ \%attr ]'], O=>0x0400, T=>0x1000 },
-       commit          => { U =>[1,1], O=>0x0480|0x0800, T=>0x1000 },
-       rollback        => { U =>[1,1], O=>0x0480|0x0800, T=>0x1000 },
-       'do'            => { U =>[2,0,'$statement [, \%attr [, @bind_params ] 
]'], O=>0x3200 },
+       clone           => { U =>[1,2,'[\%attr]'], T=>0x200 },
+       connected       => { U =>[1,0], O => 0x0004, T=>0x200, H=>3 },
+       begin_work      => { U =>[1,2,'[ \%attr ]'], O=>0x0400, T=>0x1000 },
+       commit          => { U =>[1,1], O=>0x0480|0x0800, T=>0x1000 },
+       rollback        => { U =>[1,1], O=>0x0480|0x0800, T=>0x1000 },
+       'do'            => { U =>[2,0,'$statement [, \%attr [, @bind_params ] 
]'], O=>0x3200 },
        last_insert_id  => { U =>[1,6,'[$catalog [,$schema [,$table_name 
[,$field_name [, \%attr ]]]]]'], O=>0x2800 },
-       preparse        => {  }, # XXX
-       prepare         => { U =>[2,3,'$statement [, \%attr]'],                 
   O=>0xA200 },
+       preparse        => {  }, # XXX
+       prepare         => { U =>[2,3,'$statement [, \%attr]'],                 
   O=>0xA200 },
        prepare_cached  => { U =>[2,4,'$statement [, \%attr [, $if_active ] 
]'],   O=>0xA200 },
        selectrow_array => { U =>[2,0,'$statement [, \%attr [, @bind_params ] 
]'], O=>0x2000 },
        selectrow_arrayref=>{U =>[2,0,'$statement [, \%attr [, @bind_params ] 
]'], O=>0x2000 },
@@ -458,11 +458,11 @@
        selectall_array   =>{U =>[2,0,'$statement [, \%attr [, @bind_params ] 
]'], O=>0x2000 },
        selectall_hashref=>{ U =>[3,0,'$statement, $keyfield [, \%attr [, 
@bind_params ] ]'], O=>0x2000 },
        selectcol_arrayref=>{U =>[2,0,'$statement [, \%attr [, @bind_params ] 
]'], O=>0x2000 },
-       ping            => { U =>[1,1], O=>0x0404 },
-       disconnect      => { U =>[1,1], O=>0x0400|0x0800|0x10000, T=>0x200 },
-       quote           => { U =>[2,3, '$string [, $data_type ]' ],   
O=>0x0430, T=>2 },
+       ping            => { U =>[1,1], O=>0x0404 },
+       disconnect      => { U =>[1,1], O=>0x0400|0x0800|0x10000, T=>0x200 },
+       quote           => { U =>[2,3, '$string [, $data_type ]' ],   
O=>0x0430, T=>2 },
        quote_identifier=> { U =>[2,6, '$name [, ...] [, \%attr ]' ], 
O=>0x0430, T=>2 },
-       rows            => $keeperr,
+       rows            => $keeperr,
 
        tables          => { U =>[1,6,'$catalog, $schema, $table, $type [, 
\%attr ]' ], O=>0x2200 },
        table_info      => { U =>[1,6,'$catalog, $schema, $table, $type [, 
\%attr ]' ], O=>0x2200|0x8800 },
@@ -488,11 +488,11 @@
        execute_array     => { U =>[2,0,'\\%attribs [, @args]'],         
O=>0x1040|0x4000 },
        execute_for_fetch => { U =>[2,3,'$fetch_sub [, $tuple_status]'], 
O=>0x1040|0x4000 },
 
-       fetch             => undef, # alias for fetchrow_arrayref
+       fetch             => undef, # alias for fetchrow_arrayref
        fetchrow_arrayref => undef,
        fetchrow_hashref  => undef,
        fetchrow_array    => undef,
-       fetchrow          => undef, # old alias for fetchrow_array
+       fetchrow          => undef, # old alias for fetchrow_array
 
        fetchall_arrayref => { U =>[1,3, '[ $slice [, $max_rows]]'] },
        fetchall_hashref  => { U =>[2,2,'$key_field'] },
@@ -501,8 +501,8 @@
        blob_copy_to_file => { U =>[3,3,'$field, $filename_or_handleref'] },
        dump_results => { U =>[1,5,'$maxfieldlen, $linesep, $fieldsep, 
$filehandle'] },
        more_results => { U =>[1,1] },
-       finish     =>   { U =>[1,1] },
-       cancel     =>   { U =>[1,1], O=>0x0800 },
+       finish     =>   { U =>[1,1] },
+       cancel     =>   { U =>[1,1], O=>0x0800 },
        rows       =>   $keeperr,
 
        _get_fbav       => undef,
@@ -1117,7 +1117,7 @@
     return "" if !$diff and $a_desc eq $b_desc;
 
     $diff ||= "Strings contain the same sequence of characters"
-       if length($a);
+       if length($a);
     $diff .= "\n" if $diff;
     return "a: $a_desc\nb: $b_desc\n$diff";
 }
@@ -1249,7 +1249,7 @@
        'State'         => \$h_state_store,  # Holder for DBI::state
        'Err'           => \$h_err_store,    # Holder for DBI::err
        'Errstr'        => \$h_errstr_store, # Holder for DBI::errstr
-       'TraceLevel'    => 0,
+       'TraceLevel'    => 0,
        FetchHashKeyName=> 'NAME',
        %$initial_attr,
     };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/DBI.xs new/DBI-1.651/DBI.xs
--- old/DBI-1.650/DBI.xs        2026-07-05 13:53:14.000000000 +0200
+++ new/DBI-1.651/DBI.xs        2026-07-14 08:38:30.000000000 +0200
@@ -5226,6 +5226,9 @@
     src_av = (AV*)SvRV(src_rv);
     src_fields = AvFILL(src_av)+1;
     if (src_fields != dst_fields) {
+        if ( dst_fields == 0 )
+            croak("_set_fbav(%s): array has %d elements, but the statement 
handle row buffer has 0",
+                    neatsvpv(src_rv,0), src_fields);
         warn("_set_fbav(%s): array has %d elements, the statement handle row 
buffer has %d (and NUM_OF_FIELDS is %d)",
                 neatsvpv(src_rv,0), src_fields, dst_fields, 
DBIc_NUM_FIELDS(imp_sth));
         SvREADONLY_off(dst_av);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/META.json new/DBI-1.651/META.json
--- old/DBI-1.650/META.json     2026-07-07 18:42:07.000000000 +0200
+++ new/DBI-1.651/META.json     2026-07-14 11:31:25.000000000 +0200
@@ -53,7 +53,7 @@
       "x_IRC" : "irc://irc.perl.org/#dbi",
       "x_MailingList" : "mailto:[email protected]";
       },
-   "version" : "1.650",
+   "version" : "1.651",
    "x_serialization_backend" : "JSON::PP version 4.18",
    "x_suggests" : {
       "Clone" : 0.47,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/META.yml new/DBI-1.651/META.yml
--- old/DBI-1.650/META.yml      2026-07-07 18:42:07.000000000 +0200
+++ new/DBI-1.651/META.yml      2026-07-14 11:31:25.000000000 +0200
@@ -28,7 +28,7 @@
   homepage: http://dbi.perl.org/
   license: http://dev.perl.org/licenses/
   repository: https://github.com/perl5-dbi/dbi
-version: '1.650'
+version: '1.651'
 x_serialization_backend: 'CPAN::Meta::YAML version 0.020'
 x_suggests:
   Clone: 0.47
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/dbixs_rev.h new/DBI-1.651/dbixs_rev.h
--- old/DBI-1.650/dbixs_rev.h   2026-07-07 18:41:07.000000000 +0200
+++ new/DBI-1.651/dbixs_rev.h   2026-07-14 11:30:26.000000000 +0200
@@ -1,4 +1,4 @@
-/* Tue Jul  7 18:41:07 2026 */
+/* Tue Jul 14 11:30:26 2026 */
 #define DBIXS_RELEASE  1
-#define DBIXS_VERSION  650
-#define DBIXS_REVISION 1771
+#define DBIXS_VERSION  651
+#define DBIXS_REVISION 1789
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/DBD/File/Developers.pod 
new/DBI-1.651/lib/DBD/File/Developers.pod
--- old/DBI-1.650/lib/DBD/File/Developers.pod   2026-05-29 11:43:32.000000000 
+0200
+++ new/DBI-1.651/lib/DBD/File/Developers.pod   2026-07-13 10:44:58.000000000 
+0200
@@ -490,7 +490,7 @@
       $class =~ s/::Statement/::Table/;
 
       my $flags = {
-         createMode => $createMode,
+         createMode => $createMode,
          lockMode   => $lockMode,
          };
       $self->{command} eq "DROP" and $flags->{dropMode} = 1;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/DBD/File.pm 
new/DBI-1.651/lib/DBD/File.pm
--- old/DBI-1.650/lib/DBD/File.pm       2026-07-05 13:53:14.000000000 +0200
+++ new/DBI-1.651/lib/DBD/File.pm       2026-07-14 08:41:35.000000000 +0200
@@ -630,10 +630,10 @@
     # Note this triggers only when *used*, not at definition time
     #   $dbh->{csv_tables}{foo}{file} = "/out/side/scope/foo.csv"; # OK
     #   $dbh->do ("create table foo (c char)"); # FAIL
+    my @bases = map { Cwd::abs_path ($_) } $meta->{f_dir}, 
@{$meta->{f_dir_search} || []};
     if ($searchdir) {
         my $sd = Cwd::abs_path ($searchdir);
-        my @sd = map { Cwd::abs_path ($_) } $meta->{f_dir}, 
@{$meta->{f_dir_search} || []};
-       unless (List::Util::first { $_ eq $sd } @sd) {
+        unless (List::Util::first { $_ eq $sd } @bases) {
            croak "Using data files in $searchdir is unsafe and not 
allowed.\nUse f_dir or f_dir_search.\n";
            }
        }
@@ -694,6 +694,14 @@
        $meta->{f_fqln} = $meta->{f_fqbn} . $meta->{f_lockfile};
 
     $dir && !$user_spec_file  and $tbl = File::Spec->catfile ($dir, $tbl);
+
+    if (-l $fqfn) {
+       my $real = Cwd::abs_path ($fqfn);
+       unless (List::Util::any { $real =~ m{^\Q$_\E} } @bases) {
+            croak "Data file $fqfn is a outside of f_dir f_and f_dir_search\n";
+           }
+       }
+
     $meta->{table_name} = $tbl;
 
     return $tbl;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/DBD/Proxy.pm 
new/DBI-1.651/lib/DBD/Proxy.pm
--- old/DBI-1.650/lib/DBD/Proxy.pm      2025-01-17 10:46:48.000000000 +0100
+++ new/DBI-1.651/lib/DBD/Proxy.pm      2026-07-13 10:45:06.000000000 +0200
@@ -449,7 +449,7 @@
                'TYPE' => $types,
                'cache_filled' => 1
                },
-       'proxy_cache_only' => 1,
+       'proxy_cache_only' => 1,
     });
     $sth->SUPER::STORE('NUM_OF_FIELDS' => $numFields);
     $inner->{NAME} = $names;
@@ -634,7 +634,7 @@
     $sth->SUPER::STORE('Active' => 0);
     return 0 unless $rsth; # Something's out of sync
     my $no_finish = exists($sth->{'proxy_no_finish'})
-       ? $sth->{'proxy_no_finish'}
+       ? $sth->{'proxy_no_finish'}
        : $sth->FETCH('Database')->{'proxy_no_finish'};
     unless ($no_finish) {
         local $SIG{__DIE__} = 'DEFAULT';
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/DBI/Changes.pm 
new/DBI-1.651/lib/DBI/Changes.pm
--- old/DBI-1.650/lib/DBI/Changes.pm    2026-07-07 16:22:56.000000000 +0200
+++ new/DBI-1.651/lib/DBI/Changes.pm    2026-07-14 11:25:37.000000000 +0200
@@ -12,6 +12,36 @@
 
 =encoding UTF-8
 
+=head2 Changes in DBI 1.651 - 14 Jul 2026
+
+=over 2
+
+=item *
+
+Fix inverted comparisons for strings in DBI::SQL::Nano  (CVE-2026-15043)
+
+=item *
+
+Document that IS NULL matches empty strings in DBI::SQL::Nano
+
+=item *
+
+Fix DBD::File to ensure that the table is not a symlink outside of f_dir 
(CVE-2026-15392)
+
+=item *
+
+Fix an out-of-bounds error when a statement handle has no fields but the 
source row is not empty (CVE-2026-60082)
+
+=item *
+
+Add an overridable upper bound $MAX_PATH_DEPTH for DBI::ProfileData 
(CVE-2026-60081)
+
+=item *
+
+*** WARNING: Next release will require perl-5.12 ***
+
+=back
+
 =head2 Changes in DBI 1.650 - 06 Jul 2026
 
 =over 2
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/DBI/DBD/SqlEngine/HowTo.pod 
new/DBI-1.651/lib/DBI/DBD/SqlEngine/HowTo.pod
--- old/DBI-1.650/lib/DBI/DBD/SqlEngine/HowTo.pod       2026-05-29 
11:49:58.000000000 +0200
+++ new/DBI-1.651/lib/DBI/DBD/SqlEngine/HowTo.pod       2026-07-13 
10:45:37.000000000 +0200
@@ -105,7 +105,7 @@
        $dbh->SUPER::init_valid_attributes ();
 
        $dbh->{foo_valid_attrs} = {
-           foo_version         => 1,   # contains version of this driver
+           foo_version         => 1,   # contains version of this driver
            foo_valid_attrs     => 1,   # contains the valid attributes of foo 
drivers
            foo_readonly_attrs  => 1,   # contains immutable attributes of foo 
drivers
            foo_bar             => 1,   # contains the bar attribute
@@ -114,7 +114,7 @@
            foo_manager_type    => 1,   # contains the manager class of the 
driver instance
        };
        $dbh->{foo_readonly_attrs} = {
-           foo_version         => 1,   # ensure no-one modifies the driver 
version
+           foo_version         => 1,   # ensure no-one modifies the driver 
version
            foo_valid_attrs     => 1,   # do not permit one to add more valid 
attributes ...
            foo_readonly_attrs  => 1,   # ... or make the immutable mutable
            foo_manager         => 1,   # manager is set internally only
@@ -205,7 +205,7 @@
        $dbh->SUPER::init_valid_attributes ();
 
        $dbh->{foo_valid_attrs} = {
-           foo_version         => 1,   # contains version of this driver
+           foo_version         => 1,   # contains version of this driver
            foo_valid_attrs     => 1,   # contains the valid attributes of foo 
drivers
            foo_readonly_attrs  => 1,   # contains immutable attributes of foo 
drivers
            foo_bar             => 1,   # contains the bar attribute
@@ -215,7 +215,7 @@
            foo_meta            => 1,   # contains the public interface to 
modify table meta attributes
        };
        $dbh->{foo_readonly_attrs} = {
-           foo_version         => 1,   # ensure no-one modifies the driver 
version
+           foo_version         => 1,   # ensure no-one modifies the driver 
version
            foo_valid_attrs     => 1,   # do not permit one to add more valid 
attributes ...
            foo_readonly_attrs  => 1,   # ... or make the immutable mutable
            foo_manager         => 1,   # manager is set internally only
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/DBI/Profile.pm 
new/DBI-1.651/lib/DBI/Profile.pm
--- old/DBI-1.650/lib/DBI/Profile.pm    2026-07-04 14:28:00.000000000 +0200
+++ new/DBI-1.651/lib/DBI/Profile.pm    2026-07-13 10:46:08.000000000 +0200
@@ -739,7 +739,7 @@
             push @p, DBIprofile_Statement      if $element & 0x02;
             push @p, DBIprofile_MethodName     if $element & 0x04;
             push @p, DBIprofile_MethodClass    if $element & 0x08;
-            push @p, '!Caller2'                if $element & 0x10;
+            push @p, '!Caller2'                        if $element & 0x10;
             push @Path, ($reverse ? reverse @p : @p);
         }
         elsif ($element =~ m/^&(\w.*)/) {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/DBI/ProfileData.pm 
new/DBI-1.651/lib/DBI/ProfileData.pm
--- old/DBI-1.650/lib/DBI/ProfileData.pm        2025-01-17 10:49:51.000000000 
+0100
+++ new/DBI-1.651/lib/DBI/ProfileData.pm        2026-07-14 08:38:30.000000000 
+0200
@@ -15,6 +15,8 @@
 
 This module can also be used to roll your own profile analysis:
 
+  local $DBI::ProfileData::MAX_PATH_DEPTH = 256; # override the maximum path 
depth of files
+
   # load data from dbi.prof
   $prof = DBI::ProfileData->new(File => "dbi.prof");
 
@@ -78,6 +80,8 @@
 
 use DBI::Profile qw(dbi_profile_merge);
 
+our $MAX_PATH_DEPTH = 256;
+
 # some constants for use with node data arrays
 sub COUNT     () { 0 };
 sub TOTAL     () { 1 };
@@ -287,6 +291,13 @@
             # it's a key
             my ($key, $index) = ($2, $1 - 1);
 
+            # $index comes straight from the (untrusted) profile file; a
+            # single huge value would expand @path into a giant sparse
+            # array that is then join()ed and copied per data line, giving
+            # a tiny-file -> large-memory amplification. Bound it.
+            croak("Invalid path index at $filename line $.: $1 (You may need 
to adjust \$MAX_PATH_DEPTH)")
+                if $index < 0 || $index > $MAX_PATH_DEPTH;
+
             $#path = $index;      # truncate path to new length
             $path[$index] = unescape_key($key); # place new key at end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/DBI/ProxyServer.pm 
new/DBI-1.651/lib/DBI/ProxyServer.pm
--- old/DBI-1.650/lib/DBI/ProxyServer.pm        2025-01-17 11:00:11.000000000 
+0100
+++ new/DBI-1.651/lib/DBI/ProxyServer.pm        2026-07-13 10:45:48.000000000 
+0200
@@ -46,8 +46,8 @@
 {
     my $o = \%DEFAULT_SERVER_OPTIONS;
     $o->{'chroot'}     = undef,                # To be used in the initfile,
-                                       # after loading the required
-                                       # DBI drivers.
+                                       # after loading the required
+                                       # DBI drivers.
     $o->{'clients'} =
        [ { 'mask' => '.*',
            'accept' => 1,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/DBI/PurePerl.pm 
new/DBI-1.651/lib/DBI/PurePerl.pm
--- old/DBI-1.650/lib/DBI/PurePerl.pm   2025-01-17 10:49:51.000000000 +0100
+++ new/DBI-1.651/lib/DBI/PurePerl.pm   2026-07-13 10:45:53.000000000 +0200
@@ -110,7 +110,7 @@
 use constant IMA_FUNC_REDIRECT => 0x0002; #/* is $h->func(..., "method")*/
 use constant IMA_KEEP_ERR      => 0x0004; #/* don't reset err & errstr */
 use constant IMA_KEEP_ERR_SUB  => 0x0008; #/*  '' if in nested call */
-use constant IMA_NO_TAINT_IN           => 0x0010; #/* don't check for tainted 
args*/
+use constant IMA_NO_TAINT_IN   => 0x0010; #/* don't check for tainted args*/
 use constant IMA_NO_TAINT_OUT   => 0x0020; #/* don't taint results     */
 use constant IMA_COPY_UP_STMT   => 0x0040; #/* copy sth Statement to dbh */
 use constant IMA_END_WORK      => 0x0080; #/* set on commit & rollback */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/DBI/SQL/Nano.pm 
new/DBI-1.651/lib/DBI/SQL/Nano.pm
--- old/DBI-1.650/lib/DBI/SQL/Nano.pm   2025-01-17 10:49:51.000000000 +0100
+++ new/DBI-1.651/lib/DBI/SQL/Nano.pm   2026-07-12 10:27:10.000000000 +0200
@@ -693,8 +693,8 @@
         if ( $op eq '>' )  { return $val1 gt $val2; }
         if ( $op eq '=' )  { return $val1 eq $val2; }
         if ( $op eq '<>' ) { return $val1 ne $val2; }
-        if ( $op eq '<=' ) { return $val1 ge $val2; }
-        if ( $op eq '>=' ) { return $val1 le $val2; }
+        if ( $op eq '<=' ) { return $val1 le $val2; }
+        if ( $op eq '>=' ) { return $val1 ge $val2; }
     }
 }
 
@@ -928,6 +928,7 @@
     * op may be one of:
          < > >= <= = <> LIKE CLIKE IS
     * CLIKE is a case insensitive LIKE
+    * IS NULL matches against NULL and empty strings
 
   order_clause ::= column_name [ASC|DESC]
     * a single column optional ORDER BY clause is supported
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/DBI/W32ODBC.pm 
new/DBI-1.651/lib/DBI/W32ODBC.pm
--- old/DBI-1.650/lib/DBI/W32ODBC.pm    2025-01-17 10:49:51.000000000 +0100
+++ new/DBI-1.651/lib/DBI/W32ODBC.pm    2026-07-13 10:48:14.000000000 +0200
@@ -150,7 +150,7 @@
 }
 
 sub finish {
-    shift->Close;                                              ## uncommented 
this line
+    shift->Close;                              ## uncommented this line
 }
 
 # ---
@@ -163,11 +163,11 @@
 }
 
 sub disconnect {
-       my ($h) = shift;                                        ## this will 
kill all the statement handles
+       my ($h) = shift;                        ## this will kill all the 
statement handles
        foreach (@{$h->{'___sths'}}) {          ## created for a specific 
connection
-               $_->Close if $_->{DSN};                 ##
-       }                                                               ##
-    $h->Close;                                                 ##
+               $_->Close if $_->{DSN};         ##
+       }                                       ##
+    $h->Close;                                 ##
 }
 
 sub err {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/lib/Win32/DBIODBC.pm 
new/DBI-1.651/lib/Win32/DBIODBC.pm
--- old/DBI-1.650/lib/Win32/DBIODBC.pm  2025-01-17 10:49:51.000000000 +0100
+++ new/DBI-1.651/lib/Win32/DBIODBC.pm  2026-07-13 10:49:08.000000000 +0200
@@ -33,13 +33,13 @@
        my $self= {};
 
        $_=$connect_line;
-       /^(DSN=)(.*)(;UID=)(.*)(;PWD=)(.*)(;)$/;
+       /^(DSN=)(.*)(;UID=)(.*)(;PWD=)(.*)(;)$/;
 
-       #---- DBI CONNECTION VARIABLES
+       #---- DBI CONNECTION VARIABLES
 
-       $self->{ODBC_DSN}=$2;
-       $self->{ODBC_UID}=$4;
-       $self->{ODBC_PWD}=$6;
+       $self->{ODBC_DSN}=$2;
+       $self->{ODBC_UID}=$4;
+       $self->{ODBC_PWD}=$6;
 
        #---- DBI CONNECTION VARIABLES
        $self->{DBI_DBNAME}=$self->{ODBC_DSN};
@@ -61,8 +61,8 @@
 #EMU --- $db->Sql('SELECT * FROM DUAL');
 sub Sql
 {
-       my $self= shift;
-       my $SQL_statment=shift;
+       my $self= shift;
+       my $SQL_statment=shift;
 
  #     print " SQL : $SQL_statment \n";
 
@@ -94,7 +94,7 @@
        }
 
 # [R] provide compatibility with Win32::ODBC's way of identifying erroneous 
SQL statements
-       return ($self->{'DBI_ERR'})?1:undef;
+       return ($self->{'DBI_ERR'})?1:undef;
 # -[R]-
 }
 
@@ -102,20 +102,20 @@
 #EMU --- $db->FetchRow())
 sub FetchRow
 {
-       my $self= shift;
+       my $self= shift;
 
-       my $sth=$self->{'DBI_STH'};
-       if ($sth)
+       my $sth=$self->{'DBI_STH'};
+       if ($sth)
        {
-               my @row=$sth->fetchrow_array;
-               $self->{'DBI_ROW'}=\@row;
+               my @row=$sth->fetchrow_array;
+               $self->{'DBI_ROW'}=\@row;
 
-               if (scalar(@row)>0)
-               {
+               if (scalar(@row)>0)
+               {
                        #-- the row of result is not nul
                        #-- return something nothing will be return else
                        return 1;
-               }
+               }
        }
        return undef;
 }
@@ -137,15 +137,15 @@
 #EMU --- %record = $db->DataHash;
 sub DataHash
 {
-       my $self= shift;
+       my $self= shift;
 
-       my $p_name=$self->{'DBI_NAME'};
-       my $p_row=$self->{'DBI_ROW'};
+       my $p_name=$self->{'DBI_NAME'};
+       my $p_row=$self->{'DBI_ROW'};
 
-       my @name=@$p_name;
-       my @row=@$p_row;
+       my @name=@$p_name;
+       my @row=@$p_row;
 
-       my %DataHash;
+       my %DataHash;
 #print @name; print "\n"; print @row;
 # [R] new code that seems to work consistent with Win32::ODBC
        while (@name)
@@ -174,23 +174,23 @@
 #      }
 # -[R]-
 
-       #--- Return Hash
-       return %DataHash;
+       #--- Return Hash
+       return %DataHash;
 }
 
 
 #EMU --- $db->Error()
 sub Error
 {
-       my $self= shift;
+       my $self= shift;
 
-       if ($self->{'DBI_ERR'} ne '')
-       {
+       if ($self->{'DBI_ERR'} ne '')
+       {
                #--- Return error message
                $self->{'DBI_ERRSTR'};
-       }
+       }
 
-       #-- else good no error message
+       #-- else good no error message
 }
 
 # [R] provide compatibility with Win32::ODBC's Close() method.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/t/05concathash.t 
new/DBI-1.651/t/05concathash.t
--- old/DBI-1.650/t/05concathash.t      2013-04-05 08:08:36.000000000 +0200
+++ new/DBI-1.651/t/05concathash.t      2026-07-13 10:46:21.000000000 +0200
@@ -135,7 +135,7 @@
 
         print "\n";
         cmpthese(200_000, {
-           NotNeat => sub {DBI::_concat_hash_sorted(
+           NotNeat => sub {DBI::_concat_hash_sorted(
                 $simple_hash, "=", ":",1,undef);
             },
            Neat    => sub {DBI::_concat_hash_sorted(
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/t/06attrs.t new/DBI-1.651/t/06attrs.t
--- old/DBI-1.650/t/06attrs.t   2025-01-17 10:49:51.000000000 +0100
+++ new/DBI-1.651/t/06attrs.t   2026-07-13 10:46:31.000000000 +0200
@@ -101,7 +101,7 @@
 is($dbh->state, 'S1000', '... checking $dbh->state');
 
 ok($dbh->{Executed}, '... checking Executed attribute for dbh');    # even 
though it failed
-$dbh->{Executed} = 0;                                      # reset(able)
+$dbh->{Executed} = 0;                                              # 
reset(able)
 cmp_ok($dbh->{Executed}, '==', 0, '... checking Executed attribute for dbh 
(after reset)');
 
 cmp_ok($dbh->{ErrCount}, '==', 1, '... checking ErrCount attribute for dbh 
(after error was generated)');
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/DBI-1.650/t/50dbm_simple.t 
new/DBI-1.651/t/50dbm_simple.t
--- old/DBI-1.650/t/50dbm_simple.t      2025-01-17 10:49:51.000000000 +0100
+++ new/DBI-1.651/t/50dbm_simple.t      2026-07-12 10:27:10.000000000 +0200
@@ -105,6 +105,18 @@
            [ 2, 'apples' ],
            [ 1, 'oranges' ],
        ],
+       "SELECT * FROM fruit WHERE dVal >= 'oranges' ORDER BY dKey", [
+           [ 1, 'oranges' ],
+           [ 5, 'via placeholders' ],
+       ],
+       "SELECT * FROM fruit WHERE dVal <= 'oranges' ORDER BY dVal", [
+           [ 3, '' ],
+           [ 2, 'apples' ],
+           [ 1, 'oranges' ],
+       ],
+       "SELECT * FROM fruit WHERE dVal IS NULL", [
+           [ 3, '' ],
+       ],
        "DELETE FROM fruit", 4,
        $dbi_sql_nano ? () : ( "SELECT COUNT(*) FROM fruit", [ [ 0 ] ] ),
        "DROP TABLE fruit", -1,

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.H9xVU7/_old  2026-07-17 18:48:16.106800922 +0200
+++ /var/tmp/diff_new_pack.H9xVU7/_new  2026-07-17 18:48:16.110801057 +0200
@@ -1,6 +1,6 @@
-mtime: 1783500980
-commit: 1bc4705c359559d80313214602116acb9f2c015b0b1ab9d5e9c9172e8cdf14de
+mtime: 1784277024
+commit: 853faed11c8ba7c3f4f55d4b1d7680908ffc9603390ec6a88fbef15577a3b4d0
 url: https://src.opensuse.org/perl/perl-DBI
-revision: 1bc4705c359559d80313214602116acb9f2c015b0b1ab9d5e9c9172e8cdf14de
+revision: 853faed11c8ba7c3f4f55d4b1d7680908ffc9603390ec6a88fbef15577a3b4d0
 projectscmsync: https://src.opensuse.org/perl/_ObsPrj
 

++++++ build.specials.obscpio ++++++

++++++ 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-17 10:30:24.000000000 +0200
@@ -0,0 +1 @@
+.osc

Reply via email to