Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package dnsmasq for openSUSE:Factory checked 
in at 2026-04-23 17:05:25
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/dnsmasq (Old)
 and      /work/SRC/openSUSE:Factory/.dnsmasq.new.11940 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "dnsmasq"

Thu Apr 23 17:05:25 2026 rev:105 rq:1348772 version:2.92

Changes:
--------
--- /work/SRC/openSUSE:Factory/dnsmasq/dnsmasq.changes  2026-03-27 
06:38:16.606206921 +0100
+++ /work/SRC/openSUSE:Factory/.dnsmasq.new.11940/dnsmasq.changes       
2026-04-23 17:09:20.836440201 +0200
@@ -1,0 +2,14 @@
+Wed Apr 22 12:09:45 UTC 2026 - Reinhard Max <[email protected]>
+
+- bsc#1262487, CVE-2026-6507, dnsmasq-CVE-2026-6507.patch:
+  out-of-bounds write in DHCP BOOTREPLY processing can lead to
+  denial of service.
+
+-------------------------------------------------------------------
+Mon Apr 20 08:22:10 UTC 2026 - Pedro Monreal <[email protected]>
+
+- Fix FTBFS with libnettle 4.0: (boo#1257934)
+  * dnsmasq: missed hash->digest calls in 4070a74 (1eab169)
+  * Add dnsmasq-Fix-FTBFS-nettle-4.0.patch and merge 4070a748.patch
+
+-------------------------------------------------------------------

Old:
----
  4070a748.patch

New:
----
  dnsmasq-CVE-2026-6507.patch
  dnsmasq-Fix-FTBFS-nettle-4.0.patch

----------(Old B)----------
  Old:  * dnsmasq: missed hash->digest calls in 4070a74 (1eab169)
  * Add dnsmasq-Fix-FTBFS-nettle-4.0.patch and merge 4070a748.patch
----------(Old E)----------

----------(New B)----------
  New:
- bsc#1262487, CVE-2026-6507, dnsmasq-CVE-2026-6507.patch:
  out-of-bounds write in DHCP BOOTREPLY processing can lead to
  New:  * dnsmasq: missed hash->digest calls in 4070a74 (1eab169)
  * Add dnsmasq-Fix-FTBFS-nettle-4.0.patch and merge 4070a748.patch
----------(New E)----------

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

Other differences:
------------------
++++++ dnsmasq.spec ++++++
--- /var/tmp/diff_new_pack.k9cg3n/_old  2026-04-23 17:09:21.588471142 +0200
+++ /var/tmp/diff_new_pack.k9cg3n/_new  2026-04-23 17:09:21.592471307 +0200
@@ -40,7 +40,9 @@
 Source5:        rc.dnsmasq-suse
 Source6:        system-user-dnsmasq.conf
 Patch0:         dnsmasq-groups.patch
-Patch1:         4070a748.patch
+#PATCH-FIX-UPSTREAM bsc#1257934 FTBFS with libnettle 4.0 update
+Patch1:         dnsmasq-Fix-FTBFS-nettle-4.0.patch
+Patch2:         dnsmasq-CVE-2026-6507.patch
 BuildRequires:  dbus-1-devel
 BuildRequires:  dos2unix
 BuildRequires:  libnettle-devel


++++++ dnsmasq-CVE-2026-6507.patch ++++++
>From 9ad74926d4f7f34ff902e1db5235535aa813c33f Mon Sep 17 00:00:00 2001
From: Simon Kelley <[email protected]>
Date: Mon, 6 Apr 2026 22:22:43 +0100
Subject: [PATCH] Fix 1-byte buffer overflow in relay_reply4()

Potential SIGSEGV when using DHCPv4-relay.

Thanks to Asim Viladi Oglu Manizada for finding this.
---
 src/rfc2131.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git src/rfc2131.c b/src/rfc2131.c
index 7bdfefd..55aad03 100644
--- src/rfc2131.c
+++ src/rfc2131.c
@@ -3248,7 +3248,7 @@ unsigned int relay_reply4(struct dhcp_packet *mess, 
size_t sz, char *arrival_int
 
              /* delete agent info before return RFC 3046 para 2.1 */
              *opt = OPTION_END;
-             memset(opt + 1, 0, option_len(opt) + 2);
+             memset(opt + 1, 0, option_len(opt) + 1);
            }
        }
       else if (mess->giaddr.s_addr == relay->local.addr4.s_addr)
-- 
2.20.1


++++++ dnsmasq-Fix-FTBFS-nettle-4.0.patch ++++++
>From 4070a74862c3c956a676d2b931ff186e14f5d9f5 Mon Sep 17 00:00:00 2001
From: Simon Kelley <[email protected]>
Date: Sun, 1 Mar 2026 12:01:12 +0000
Subject: [PATCH] Fix FTBFS with nettle 4.0.

Thanks to Andreas Metzler for the heads-up.
---
 src/crypto.c  | 23 ++++++++++++++++++++++-
 src/dnsmasq.h |  1 +
 src/dnssec.c  |  2 +-
 3 files changed, 24 insertions(+), 2 deletions(-)

diff --git src/crypto.c src/crypto.c
index 92de2d99..002aae3e 100644
--- src/crypto.c
+++ src/crypto.c
@@ -93,7 +93,15 @@ static void null_hash_update(void *ctxv, size_t length, 
const uint8_t *src)
   memcpy(null_hash_buff + ctx->len, src, length);
   ctx->len += length;
 }
- 
+
+/* The prototype changes in nettle 4.0 to omit the length argument */
+#if MIN_VERSION(4, 0)
+static void null_hash_digest(void *ctx, uint8_t *dst)
+{
+  ((struct null_hash_digest *)dst)->buff = null_hash_buff;
+  ((struct null_hash_digest *)dst)->len = ((struct null_hash_ctx *)ctx)->len;
+}
+#else
 static void null_hash_digest(void *ctx, size_t length, uint8_t *dst)
 {
   (void)length;
@@ -101,6 +109,7 @@ static void null_hash_digest(void *ctx, size_t length, 
uint8_t *dst)
   ((struct null_hash_digest *)dst)->buff = null_hash_buff;
   ((struct null_hash_digest *)dst)->len = ((struct null_hash_ctx *)ctx)->len;
 }
+#endif
 
 static struct nettle_hash null_hash = {
   "null_hash",
@@ -501,4 +510,16 @@ const struct nettle_hash *hash_find(char *name)
 #endif
 }
 
+/* The prototype changes in nettle 4.0 to omit the length argument */
+void nettle_digest_wrapper(const struct nettle_hash *hash, void *ctx, size_t 
length, uint8_t *dst)
+{
+#if MIN_VERSION(4, 0)
+  (void)length;
+  hash->digest(ctx, dst);
+#else
+  hash->digest(ctx, length, dst);
+#endif
+}
+
+
 #endif /* defined(HAVE_DNSSEC) */
diff --git src/dnsmasq.h src/dnsmasq.h
index 510c88fa..c5b08875 100644
--- src/dnsmasq.h
+++ src/dnsmasq.h
@@ -1489,6 +1489,7 @@ int verify(struct blockdata *key_data, unsigned int 
key_len, unsigned char *sig,
 char *ds_digest_name(int digest);
 char *algo_digest_name(int algo);
 char *nsec3_digest_name(int digest);
+void nettle_digest_wrapper(const struct nettle_hash *hash, void *ctx, size_t 
length, uint8_t *dst);
 
 /* util.c */
 void rand_init(void);
diff --git src/dnssec.c src/dnssec.c
index 856d7927..fddde770 100644
--- src/dnssec.c
+++ src/dnssec.c
@@ -656,7 +656,7 @@ static int validate_rrset(time_t now, struct dns_header 
*header, size_t plen, in
            }
        }
      
-      hash->digest(ctx, hash->digest_size, digest);
+      nettle_digest_wrapper(hash, ctx, hash->digest_size, digest);
       
       /* namebuff used for workspace above, restore to leave unchanged on exit 
*/
       p = (unsigned char*)(rrset[0]);
>From 1eab169173fc4c8579a3db61186096fe117e6aca Mon Sep 17 00:00:00 2001
From: Simon Kelley <[email protected]>
Date: Sun, 1 Mar 2026 12:33:38 +0000
Subject: [PATCH] Fix missed hash->digest calls in
 4070a74862c3c956a676d2b931ff186e14f5d9f5

---
 src/dnssec.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git src/dnssec.c src/dnssec.c
index fddde770..66b62bfc 100644
--- src/dnssec.c
+++ src/dnssec.c
@@ -836,7 +836,7 @@ int dnssec_validate_by_ds(time_t now, struct dns_header 
*header, size_t plen, ch
                 rather then O(keys x DSs) */
              hash->update(ctx, (unsigned int)wire_len, (unsigned char *)name);
              hash->update(ctx, (unsigned int)rdlen, psave);
-             hash->digest(ctx, hash->digest_size, digest);
+             nettle_digest_wrapper(hash, ctx, hash->digest_size, digest);
              
              from_wire(name);
 
@@ -1385,13 +1385,13 @@ static int hash_name(char *in, unsigned char **out, 
struct nettle_hash const *ha
  
   hash->update(ctx, to_wire(in), (unsigned char *)in);
   hash->update(ctx, salt_len, salt);
-  hash->digest(ctx, hash->digest_size, digest);
+  nettle_digest_wrapper(hash, ctx, hash->digest_size, digest);
 
   for(i = 0; i < iterations; i++)
     {
       hash->update(ctx, hash->digest_size, digest);
       hash->update(ctx, salt_len, salt);
-      hash->digest(ctx, hash->digest_size, digest);
+      nettle_digest_wrapper(hash, ctx, hash->digest_size, digest);
     }
    
   from_wire(in);

Reply via email to