Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package bettercap for openSUSE:Factory 
checked in at 2026-05-11 16:58:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/bettercap (Old)
 and      /work/SRC/openSUSE:Factory/.bettercap.new.1966 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "bettercap"

Mon May 11 16:58:20 2026 rev:7 rq:1352442 version:2.41.7

Changes:
--------
--- /work/SRC/openSUSE:Factory/bettercap/bettercap.changes      2025-12-18 
18:35:14.895181353 +0100
+++ /work/SRC/openSUSE:Factory/.bettercap.new.1966/bettercap.changes    
2026-05-11 17:09:20.606418658 +0200
@@ -1,0 +2,19 @@
+Mon May 11 09:50:38 UTC 2026 - Martin Hauke <[email protected]>
+
+- Update to version 2.41.7:
+  Fixes
+  * Fixed mysql.server panic on crafted client handshake (remote
+    DoS). Fixes CVE-2026-8276 (boo#1264701).
+  * Fixed zerogod IPP chunked body panic via OOB uint64 allocation
+    (#1263). Fixes CVE-2026-8275 (boo#1264702).
+  * Close connection on panic recovery in the TCP acceptor.
+  * Fixed flags value (0x0c → 0xc0) in prefix option for ICMPv6
+    router advertisement.
+  * Use only iwlist to detect supported channels (fixes #1243).
+  * Fixed dropped graph error.
+  * Fixed JS SBCB deserialization and JSSVCB key int64 typing.
+  * int64 conversion for otto backwards compatibility.
+  Improvements
+  * Enhanced PMKID validation and debug logging.
+
+-------------------------------------------------------------------

Old:
----
  bettercap-2.41.5.obscpio

New:
----
  bettercap-2.41.7.obscpio

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

Other differences:
------------------
++++++ bettercap.spec ++++++
--- /var/tmp/diff_new_pack.NZeAuW/_old  2026-05-11 17:09:21.662462110 +0200
+++ /var/tmp/diff_new_pack.NZeAuW/_new  2026-05-11 17:09:21.666462274 +0200
@@ -1,8 +1,8 @@
 #
 # spec file for package bettercap
 #
-# Copyright (c) 2025 SUSE LLC and contributors
-# Copyright (c) 2019-2025, Martin Hauke <[email protected]>
+# Copyright (c) 2026 SUSE LLC and contributors
+# Copyright (c) 2019-2026, Martin Hauke <[email protected]>
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -18,7 +18,7 @@
 
 
 Name:           bettercap
-Version:        2.41.5
+Version:        2.41.7
 Release:        0
 Summary:        Swiss army knife for network attacks and monitoring
 License:        GPL-3.0-or-later

++++++ _service ++++++
--- /var/tmp/diff_new_pack.NZeAuW/_old  2026-05-11 17:09:21.698463591 +0200
+++ /var/tmp/diff_new_pack.NZeAuW/_new  2026-05-11 17:09:21.702463755 +0200
@@ -2,7 +2,7 @@
   <service name="obs_scm" mode="manual">
     <param name="url">https://github.com/bettercap/bettercap.git</param>
     <param name="scm">git</param>
-    <param name="revision">v2.41.5</param>
+    <param name="revision">v2.41.7</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>
@@ -18,4 +18,3 @@
   </service>
 </services>
 
-

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.NZeAuW/_old  2026-05-11 17:09:21.722464578 +0200
+++ /var/tmp/diff_new_pack.NZeAuW/_new  2026-05-11 17:09:21.730464907 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/bettercap/bettercap.git</param>
-              <param 
name="changesrevision">e71140334ed0d309413512462b2c35c6f513b832</param></service></servicedata>
+              <param 
name="changesrevision">dfe56780bb342b6a6715c9557a2cefe1f13d805c</param></service></servicedata>
 (No newline at EOF)
 

++++++ bettercap-2.41.5.obscpio -> bettercap-2.41.7.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bettercap-2.41.5/.github/workflows/build-and-deploy.yml 
new/bettercap-2.41.7/.github/workflows/build-and-deploy.yml
--- old/bettercap-2.41.5/.github/workflows/build-and-deploy.yml 2025-12-15 
14:26:34.000000000 +0100
+++ new/bettercap-2.41.7/.github/workflows/build-and-deploy.yml 2026-05-11 
11:43:42.000000000 +0200
@@ -86,7 +86,7 @@
         7z a "bettercap_${{ matrix.os.name }}_${{ matrix.arch }}.zip" "${{ 
env.OUTPUT }}" "bettercap_${{ matrix.os.name }}_${{ matrix.arch }}.sha256"
 
     - name: Upload Artifacts
-      uses: actions/upload-artifact@v4
+      uses: actions/upload-artifact@v7
       with:
         name: release-artifacts-${{ matrix.os.name }}-${{ matrix.arch }}
         path: |
@@ -99,7 +99,7 @@
     runs-on: ubuntu-latest
     steps:
         - name: Download Artifacts
-          uses: actions/download-artifact@v5
+          uses: actions/download-artifact@v8
           with:
             pattern: release-artifacts-*
             merge-multiple: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bettercap-2.41.5/.github/workflows/build-and-push-docker.yml 
new/bettercap-2.41.7/.github/workflows/build-and-push-docker.yml
--- old/bettercap-2.41.5/.github/workflows/build-and-push-docker.yml    
2025-12-15 14:26:34.000000000 +0100
+++ new/bettercap-2.41.7/.github/workflows/build-and-push-docker.yml    
2026-05-11 11:43:42.000000000 +0200
@@ -14,16 +14,16 @@
         uses: actions/checkout@v4
 
       - name: Set up QEMU
-        uses: docker/setup-qemu-action@v3
+        uses: docker/setup-qemu-action@v4
       - name: Set up Docker Buildx
         uses: docker/setup-buildx-action@v3
       - name: Login to Docker Hub
-        uses: docker/login-action@v3
+        uses: docker/login-action@v4
         with:
           username: ${{ secrets.DOCKERHUB_USERNAME }}
           password: ${{ secrets.DOCKERHUB_TOKEN }}
       - name: Build and push
-        uses: docker/build-push-action@v6
+        uses: docker/build-push-action@v7
         with:
           platforms: linux/amd64,linux/arm64
           push: true
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bettercap-2.41.5/Dockerfile.arm64 
new/bettercap-2.41.7/Dockerfile.arm64
--- old/bettercap-2.41.5/Dockerfile.arm64       1970-01-01 01:00:00.000000000 
+0100
+++ new/bettercap-2.41.7/Dockerfile.arm64       2026-05-11 11:43:42.000000000 
+0200
@@ -0,0 +1,42 @@
+# syntax=docker/dockerfile:1
+
+# build stage for cross-compiling for arm64 using native Go cross-compilation
+FROM golang:1.24-bookworm AS builder
+
+# install cross-compilation toolchain and ARM64 libraries
+RUN dpkg --add-architecture arm64 && \
+    apt-get update && apt-get install -y --no-install-recommends \
+    gcc-aarch64-linux-gnu \
+    libc6-dev-arm64-cross \
+    libpcap-dev:arm64 \
+    libnetfilter-queue-dev:arm64 \
+    libusb-1.0-0-dev:arm64 \
+    libbluetooth-dev:arm64 \
+    && rm -rf /var/lib/apt/lists/*
+
+WORKDIR /src
+
+# cache go modules (runs natively on x86_64 - fast!)
+RUN go env -w GOCACHE=/go-cache
+RUN go env -w GOMODCACHE=/gomod-cache
+
+COPY go.mod go.sum ./
+RUN --mount=type=cache,target=/gomod-cache go mod tidy
+RUN --mount=type=cache,target=/gomod-cache go mod download
+
+# copy source code
+COPY . .
+
+# cross-compile for ARM64 using native x86_64 Go compiler
+ENV CC=aarch64-linux-gnu-gcc
+ENV CGO_ENABLED=1
+ENV GOOS=linux
+ENV GOARCH=arm64
+ENV PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig
+
+# build with cgo enabled for native library bindings
+RUN --mount=type=cache,target=/gomod-cache --mount=type=cache,target=/go-cache 
make
+
+# output stage - minimal image containing only the binary
+FROM scratch AS output
+COPY --from=builder /src/bettercap /bettercap
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bettercap-2.41.5/Makefile 
new/bettercap-2.41.7/Makefile
--- old/bettercap-2.41.5/Makefile       2025-12-15 14:26:34.000000000 +0100
+++ new/bettercap-2.41.7/Makefile       2026-05-11 11:43:42.000000000 +0200
@@ -40,4 +40,13 @@
        $(RM) $(TARGET)
        $(RM) -r build
 
+build-arm64: clean
+       docker build -f Dockerfile.arm64 \
+               --target=output \
+               --output type=local,dest=. \
+               .
+
+sync-arm64:
+       rsync -rvzc ./bettercap [email protected]:/home/pi/
+
 .PHONY: all build build_with_race_detector resources install docker test 
html_coverage benchmark fmt clean
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bettercap-2.41.5/core/banner.go 
new/bettercap-2.41.7/core/banner.go
--- old/bettercap-2.41.5/core/banner.go 2025-12-15 14:26:34.000000000 +0100
+++ new/bettercap-2.41.7/core/banner.go 2026-05-11 11:43:42.000000000 +0200
@@ -2,7 +2,7 @@
 
 const (
        Name    = "bettercap"
-       Version = "2.41.5"
+       Version = "2.41.7"
        Author  = "Simone 'evilsocket' Margaritelli"
        Website = "https://bettercap.org/";
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bettercap-2.41.5/modules/dns_proxy/dns_proxy_js_query.go 
new/bettercap-2.41.7/modules/dns_proxy/dns_proxy_js_query.go
--- old/bettercap-2.41.5/modules/dns_proxy/dns_proxy_js_query.go        
2025-12-15 14:26:34.000000000 +0100
+++ new/bettercap-2.41.7/modules/dns_proxy/dns_proxy_js_query.go        
2026-05-11 11:43:42.000000000 +0200
@@ -170,6 +170,14 @@
        return uint64(0)
 }
 
+func uint8ArrayToInt64Array(arr []uint8) []int64 {
+       vArr := make([]int64, 0, len(arr))
+       for _, item := range arr {
+               vArr = append(vArr, int64(item))
+       }
+       return vArr
+}
+
 func uint16ArrayToInt64Array(arr []uint16) []int64 {
        vArr := make([]int64, 0, len(arr))
        for _, item := range arr {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bettercap-2.41.5/modules/dns_proxy/dns_proxy_js_record_edns0.go 
new/bettercap-2.41.7/modules/dns_proxy/dns_proxy_js_record_edns0.go
--- old/bettercap-2.41.5/modules/dns_proxy/dns_proxy_js_record_edns0.go 
2025-12-15 14:26:34.000000000 +0100
+++ new/bettercap-2.41.7/modules/dns_proxy/dns_proxy_js_record_edns0.go 
2026-05-11 11:43:42.000000000 +0200
@@ -12,7 +12,7 @@
        option := e.Option()
 
        jsEDNS0 = map[string]interface{}{
-               "Option": option,
+               "Option": int64(option),
        }
 
        var jsVal map[string]interface{}
@@ -20,68 +20,68 @@
        switch opt := e.(type) {
        case *dns.EDNS0_LLQ:
                jsVal = map[string]interface{}{
-                       "Code":      opt.Code,
-                       "Error":     opt.Error,
-                       "Id":        opt.Id,
-                       "LeaseLife": opt.LeaseLife,
-                       "Opcode":    opt.Opcode,
-                       "Version":   opt.Version,
+                       "Code":      int64(opt.Code),
+                       "Error":     int64(opt.Error),
+                       "Id":        int64(opt.Id),
+                       "LeaseLife": int64(opt.LeaseLife),
+                       "Opcode":    int64(opt.Opcode),
+                       "Version":   int64(opt.Version),
                }
        case *dns.EDNS0_UL:
                jsVal = map[string]interface{}{
-                       "Code":     opt.Code,
-                       "Lease":    opt.Lease,
-                       "KeyLease": opt.KeyLease,
+                       "Code":     int64(opt.Code),
+                       "Lease":    int64(opt.Lease),
+                       "KeyLease": int64(opt.KeyLease),
                }
        case *dns.EDNS0_NSID:
                jsVal = map[string]interface{}{
-                       "Code": opt.Code,
+                       "Code": int64(opt.Code),
                        "Nsid": opt.Nsid,
                }
        case *dns.EDNS0_ESU:
                jsVal = map[string]interface{}{
-                       "Code": opt.Code,
+                       "Code": int64(opt.Code),
                        "Uri":  opt.Uri,
                }
        case *dns.EDNS0_DAU:
                jsVal = map[string]interface{}{
-                       "AlgCode": opt.AlgCode,
-                       "Code":    opt.Code,
+                       "AlgCode": uint8ArrayToInt64Array(opt.AlgCode),
+                       "Code":    int64(opt.Code),
                }
        case *dns.EDNS0_DHU:
                jsVal = map[string]interface{}{
-                       "AlgCode": opt.AlgCode,
-                       "Code":    opt.Code,
+                       "AlgCode": uint8ArrayToInt64Array(opt.AlgCode),
+                       "Code":    int64(opt.Code),
                }
        case *dns.EDNS0_N3U:
                jsVal = map[string]interface{}{
-                       "AlgCode": opt.AlgCode,
-                       "Code":    opt.Code,
+                       "AlgCode": uint8ArrayToInt64Array(opt.AlgCode),
+                       "Code":    int64(opt.Code),
                }
        case *dns.EDNS0_SUBNET:
                jsVal = map[string]interface{}{
                        "Address":       opt.Address.String(),
-                       "Code":          opt.Code,
-                       "Family":        opt.Family,
-                       "SourceNetmask": opt.SourceNetmask,
-                       "SourceScope":   opt.SourceScope,
+                       "Code":          int64(opt.Code),
+                       "Family":        int64(opt.Family),
+                       "SourceNetmask": int64(opt.SourceNetmask),
+                       "SourceScope":   int64(opt.SourceScope),
                }
        case *dns.EDNS0_EXPIRE:
                jsVal = map[string]interface{}{
-                       "Code":   opt.Code,
+                       "Code":   int64(opt.Code),
                        "Empty":  opt.Empty,
-                       "Expire": opt.Expire,
+                       "Expire": int64(opt.Expire),
                }
        case *dns.EDNS0_COOKIE:
                jsVal = map[string]interface{}{
-                       "Code":   opt.Code,
+                       "Code":   int64(opt.Code),
                        "Cookie": opt.Cookie,
                }
        case *dns.EDNS0_TCP_KEEPALIVE:
                jsVal = map[string]interface{}{
-                       "Code":    opt.Code,
-                       "Length":  opt.Length,
-                       "Timeout": opt.Timeout,
+                       "Code":    int64(opt.Code),
+                       "Length":  int64(opt.Length),
+                       "Timeout": int64(opt.Timeout),
                }
        case *dns.EDNS0_PADDING:
                jsVal = map[string]interface{}{
@@ -90,11 +90,11 @@
        case *dns.EDNS0_EDE:
                jsVal = map[string]interface{}{
                        "ExtraText": opt.ExtraText,
-                       "InfoCode":  opt.InfoCode,
+                       "InfoCode":  int64(opt.InfoCode),
                }
        case *dns.EDNS0_LOCAL:
                jsVal = map[string]interface{}{
-                       "Code": opt.Code,
+                       "Code": int64(opt.Code),
                        "Data": string(opt.Data),
                }
        default:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bettercap-2.41.5/modules/dns_proxy/dns_proxy_js_record_svcb.go 
new/bettercap-2.41.7/modules/dns_proxy/dns_proxy_js_record_svcb.go
--- old/bettercap-2.41.5/modules/dns_proxy/dns_proxy_js_record_svcb.go  
2025-12-15 14:26:34.000000000 +0100
+++ new/bettercap-2.41.7/modules/dns_proxy/dns_proxy_js_record_svcb.go  
2026-05-11 11:43:42.000000000 +0200
@@ -12,7 +12,7 @@
        key := kv.Key()
 
        jsKv := map[string]interface{}{
-               "Key": uint16(key),
+               "Key": int64(key),
        }
 
        switch v := kv.(type) {
@@ -23,7 +23,7 @@
        case *dns.SVCBECHConfig:
                jsKv["ECH"] = string(v.ECH)
        case *dns.SVCBPort:
-               jsKv["Port"] = v.Port
+               jsKv["Port"] = int64(v.Port)
        case *dns.SVCBIPv4Hint:
                ips := v.Hint
                jsIps := make([]string, len(ips))
@@ -48,7 +48,7 @@
                for i, _key := range keys {
                        jsKeys[i] = uint16(_key)
                }
-               jsKv["Code"] = jsKeys
+               jsKv["Code"] = uint16ArrayToInt64Array(jsKeys)
        default:
                return nil, fmt.Errorf("error creating JSSVCBKeyValue: unknown 
key: %d", key)
        }
@@ -64,20 +64,20 @@
        switch key {
        case dns.SVCB_ALPN:
                kv = &dns.SVCBAlpn{
-                       Alpn: jsPropToStringArray(jsKv, "Value"),
+                       Alpn: jsPropToStringArray(jsKv, "Alpn"),
                }
        case dns.SVCB_NO_DEFAULT_ALPN:
                kv = &dns.SVCBNoDefaultAlpn{}
        case dns.SVCB_ECHCONFIG:
                kv = &dns.SVCBECHConfig{
-                       ECH: []byte(jsPropToString(jsKv, "Value")),
+                       ECH: []byte(jsPropToString(jsKv, "ECH")),
                }
        case dns.SVCB_PORT:
                kv = &dns.SVCBPort{
-                       Port: jsPropToUint16(jsKv, "Value"),
+                       Port: jsPropToUint16(jsKv, "Port"),
                }
        case dns.SVCB_IPV4HINT:
-               jsIps := jsPropToStringArray(jsKv, "Value")
+               jsIps := jsPropToStringArray(jsKv, "Hint")
                var ips []net.IP
                for _, jsIp := range jsIps {
                        ip := net.ParseIP(jsIp)
@@ -91,7 +91,7 @@
                        Hint: ips,
                }
        case dns.SVCB_IPV6HINT:
-               jsIps := jsPropToStringArray(jsKv, "Value")
+               jsIps := jsPropToStringArray(jsKv, "Hint")
                var ips []net.IP
                for _, jsIp := range jsIps {
                        ip := net.ParseIP(jsIp)
@@ -106,12 +106,12 @@
                }
        case dns.SVCB_DOHPATH:
                kv = &dns.SVCBDoHPath{
-                       Template: jsPropToString(jsKv, "Value"),
+                       Template: jsPropToString(jsKv, "Template"),
                }
        case dns.SVCB_OHTTP:
                kv = &dns.SVCBOhttp{}
        case dns.SVCB_MANDATORY:
-               v := jsPropToUint16Array(jsKv, "Value")
+               v := jsPropToUint16Array(jsKv, "Code")
                keys := make([]dns.SVCBKey, len(v))
                for i, jsKey := range v {
                        keys[i] = dns.SVCBKey(jsKey)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bettercap-2.41.5/modules/graph/graph.go 
new/bettercap-2.41.7/modules/graph/graph.go
--- old/bettercap-2.41.5/modules/graph/graph.go 2025-12-15 14:26:34.000000000 
+0100
+++ new/bettercap-2.41.7/modules/graph/graph.go 2026-05-11 11:43:42.000000000 
+0200
@@ -140,6 +140,9 @@
                                        }
                                        return nil
                                })
+                               if err != nil {
+                                       return err
+                               }
                        }
                }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bettercap-2.41.5/modules/mysql_server/mysql_server.go 
new/bettercap-2.41.7/modules/mysql_server/mysql_server.go
--- old/bettercap-2.41.5/modules/mysql_server/mysql_server.go   2025-12-15 
14:26:34.000000000 +0100
+++ new/bettercap-2.41.7/modules/mysql_server/mysql_server.go   2026-05-11 
11:43:42.000000000 +0200
@@ -121,15 +121,20 @@
                                if _, err := conn.Write(packets.MySQLGreeting); 
err != nil {
                                        mod.Warning("error while writing server 
greeting: %s", err)
                                        continue
-                               } else if _, err = reader.Read(readBuffer); err 
!= nil {
+                               } else if read, err = reader.Read(readBuffer); 
err != nil {
                                        mod.Warning("error while reading client 
message: %s", err)
                                        continue
                                }
 
+                               if read < 37 {
+                                       mod.Warning("client handshake too short 
(%d bytes)", read)
+                                       continue
+                               }
+
                                // parse client capabilities and validate 
connection
                                // TODO: parse mysql connections properly and
                                //       display additional connection 
attributes
-                               capabilities := fmt.Sprintf("%08b", 
(int(uint32(readBuffer[4]) | uint32(readBuffer[5])<<8)))
+                               capabilities := fmt.Sprintf("%016b", 
(int(uint32(readBuffer[4]) | uint32(readBuffer[5])<<8)))
                                loadData := string(capabilities[8])
                                username := string(bytes.Split(readBuffer[36:], 
[]byte{0})[0])
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bettercap-2.41.5/modules/wifi/wifi_recon_handshakes.go 
new/bettercap-2.41.7/modules/wifi/wifi_recon_handshakes.go
--- old/bettercap-2.41.5/modules/wifi/wifi_recon_handshakes.go  2025-12-15 
14:26:34.000000000 +0100
+++ new/bettercap-2.41.7/modules/wifi/wifi_recon_handshakes.go  2026-05-11 
11:43:42.000000000 +0200
@@ -70,7 +70,12 @@
                        rawPMKID = station.Handshake.AddAndGetPMKID(packet)
                        PMKID := "without PMKID"
                        if rawPMKID != nil {
-                               PMKID = "with PMKID"
+                               // ADDED: Use the existing allZeros function to 
check for vendor patches (fake PMKIDs)
+                               if allZeros(rawPMKID) {
+                                       PMKID = "with FAKE PMKID (all zeros)"
+                               } else {
+                                       PMKID = "with valid PMKID"
+                               }
                        }
 
                        mod.Debug("got frame 1/4 of the %s <-> %s handshake 
(%s) (anonce:%x)",
@@ -118,7 +123,8 @@
                        }
                }
 
-               validPMKID := rawPMKID != nil
+               // ADDED: PMKID is only valid if it's not nil AND not all zeros
+               validPMKID := rawPMKID != nil && !allZeros(rawPMKID)
                validHalfHandshake := !staIsUs && station.Handshake.Half()
                validFullHandshake := station.Handshake.Complete()
                // if we have unsaved packets AND
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bettercap-2.41.5/modules/zerogod/zerogod_acceptor.go 
new/bettercap-2.41.7/modules/zerogod/zerogod_acceptor.go
--- old/bettercap-2.41.5/modules/zerogod/zerogod_acceptor.go    2025-12-15 
14:26:34.000000000 +0100
+++ new/bettercap-2.41.7/modules/zerogod/zerogod_acceptor.go    2026-05-11 
11:43:42.000000000 +0200
@@ -117,16 +117,25 @@
                                }
                        } else {
                                a.mod.Debug("accepted %s connection for service 
%s (port %d): %v", a.proto, tui.Green(a.service), a.port, conn.RemoteAddr())
-                               go a.handler.Handle(&HandlerContext{
-                                       service:       a.service,
-                                       mod:           a.mod,
-                                       client:        conn,
-                                       srvHost:       a.srvHost,
-                                       srvPort:       int(a.port),
-                                       srvTLS:        a.tlsConfig != nil,
-                                       ippAttributes: a.ippAttributes,
-                                       httpPaths:     a.httpPaths,
-                               })
+                               go func() {
+                                       ctx := &HandlerContext{
+                                               service:       a.service,
+                                               mod:           a.mod,
+                                               client:        conn,
+                                               srvHost:       a.srvHost,
+                                               srvPort:       int(a.port),
+                                               srvTLS:        a.tlsConfig != 
nil,
+                                               ippAttributes: a.ippAttributes,
+                                               httpPaths:     a.httpPaths,
+                                       }
+                                       defer func() {
+                                               if r := recover(); r != nil {
+                                                       a.mod.Error("panic in 
%s handler for %s: %v", a.service, conn.RemoteAddr(), r)
+                                                       conn.Close()
+                                               }
+                                       }()
+                                       a.handler.Handle(ctx)
+                               }()
                        }
                }
                a.mod.Debug("%s listener for port %d (%s) stopped", a.proto, 
a.port, tui.Green(a.service))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/bettercap-2.41.5/modules/zerogod/zerogod_ipp_primitives.go 
new/bettercap-2.41.7/modules/zerogod/zerogod_ipp_primitives.go
--- old/bettercap-2.41.5/modules/zerogod/zerogod_ipp_primitives.go      
2025-12-15 14:26:34.000000000 +0100
+++ new/bettercap-2.41.7/modules/zerogod/zerogod_ipp_primitives.go      
2026-05-11 11:43:42.000000000 +0200
@@ -13,6 +13,7 @@
 )
 
 const IPP_CHUNK_MAX_LINE_SIZE = 1024
+const IPP_CHUNK_MAX_SIZE = 10 * 1024 * 1024 // 10 MB
 
 var IPP_REQUEST_NAMES = map[int16]string{
        // https://tools.ietf.org/html/rfc2911#section-4.4.15
@@ -136,6 +137,8 @@
                        return nil, fmt.Errorf("error reading next chunk size: 
%v", err)
                } else if chunkSize == 0 {
                        break
+               } else if chunkSize > IPP_CHUNK_MAX_SIZE {
+                       return nil, fmt.Errorf("chunk size %d exceeds maximum 
allowed size of %d bytes", chunkSize, IPP_CHUNK_MAX_SIZE)
                } else {
                        chunk := make([]byte, chunkSize)
                        if n, err := ctx.client.Read(chunk); err != nil {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bettercap-2.41.5/network/net_linux.go 
new/bettercap-2.41.7/network/net_linux.go
--- old/bettercap-2.41.5/network/net_linux.go   2025-12-15 14:26:34.000000000 
+0100
+++ new/bettercap-2.41.7/network/net_linux.go   2026-05-11 11:43:42.000000000 
+0200
@@ -143,13 +143,10 @@
 }
 
 func GetSupportedFrequencies(iface string) ([]int, error) {
-       // give priority to iwlist because of 
https://github.com/bettercap/bettercap/issues/881
-       // UPDATE: Changed the priority due iwlist doesn't support 6GHz
-       if core.HasBinary("iw") {
-               return iwSupportedFrequencies(iface)
-       } else if core.HasBinary("iwlist") {
+       // rely on iwlist only because of 
https://github.com/bettercap/bettercap/issues/1243
+       if core.HasBinary("iwlist") {
                return iwlistSupportedFrequencies(iface)
        }
 
-       return nil, fmt.Errorf("no iw or iwlist binaries found in $PATH")
+       return nil, fmt.Errorf("no iwlist binaries found in $PATH")
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bettercap-2.41.5/packets/icmp6.go 
new/bettercap-2.41.7/packets/icmp6.go
--- old/bettercap-2.41.5/packets/icmp6.go       2025-12-15 14:26:34.000000000 
+0100
+++ new/bettercap-2.41.7/packets/icmp6.go       2026-05-11 11:43:42.000000000 
+0200
@@ -59,7 +59,7 @@
        }
        prefixData := []byte{
                prefixLength,
-               0x0c,                   // flags
+               0xc0,                   // flags
                0x00, 0x27, 0x8d, 0x00, // valid lifetime (2592000)
                0x00, 0x09, 0x3a, 0x80, // preferred lifetime (604800)
                0x00, 0x00, 0x00, 0x00, // reserved
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bettercap-2.41.5/packets/icmp6_test.go 
new/bettercap-2.41.7/packets/icmp6_test.go
--- old/bettercap-2.41.5/packets/icmp6_test.go  2025-12-15 14:26:34.000000000 
+0100
+++ new/bettercap-2.41.7/packets/icmp6_test.go  2026-05-11 11:43:42.000000000 
+0200
@@ -221,6 +221,9 @@
                                        if len(opt.Data) > 0 && opt.Data[0] != 
prefixLength {
                                                t.Errorf("PrefixInfo prefix 
length = %d, want %d", opt.Data[0], prefixLength)
                                        }
+                                       if len(opt.Data) > 1 && opt.Data[1] != 
192 {
+                                               t.Errorf("PrefixInfo prefix 
flags = %d, want 192", opt.Data[1])
+                                       }
                                }
                        }
 

++++++ bettercap.obsinfo ++++++
--- /var/tmp/diff_new_pack.NZeAuW/_old  2026-05-11 17:09:24.366573371 +0200
+++ /var/tmp/diff_new_pack.NZeAuW/_new  2026-05-11 17:09:24.370573535 +0200
@@ -1,5 +1,5 @@
 name: bettercap
-version: 2.41.5
-mtime: 1765805194
-commit: e71140334ed0d309413512462b2c35c6f513b832
+version: 2.41.7
+mtime: 1778492622
+commit: dfe56780bb342b6a6715c9557a2cefe1f13d805c
 

++++++ vendor.tar.gz ++++++

Reply via email to