Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package azure-storage-azcopy for
openSUSE:Factory checked in at 2026-03-23 17:16:02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/azure-storage-azcopy (Old)
and /work/SRC/openSUSE:Factory/.azure-storage-azcopy.new.8177 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "azure-storage-azcopy"
Mon Mar 23 17:16:02 2026 rev:5 rq:1342040 version:10.32.2
Changes:
--------
---
/work/SRC/openSUSE:Factory/azure-storage-azcopy/azure-storage-azcopy.changes
2026-03-11 20:58:35.330012374 +0100
+++
/work/SRC/openSUSE:Factory/.azure-storage-azcopy.new.8177/azure-storage-azcopy.changes
2026-03-23 17:17:56.577088209 +0100
@@ -1,0 +2,42 @@
+Mon Mar 23 12:51:41 UTC 2026 - John Paul Adrian Glaubitz
<[email protected]>
+
+- Update to 10.32.2
+ * cloud.google.com/go/storage v1.45.0 -> v1.50.0
+ * Golang 1.24.13 -> 1.25.8
+ * Golangci-lint v1.64.8 -> v2.11.3
+ * Fixed a regression where the folder tracker would panic with
+ pre-existing folders and --overwrite=ifSourceNewer. (#3403)
+ * Fixed a regression where cancellation was not working via stdin (#3373)
+ * Fixed a regression where we hit segfaults from logging
+ to a nil logger in the process checker. (#3384)
+ * Fixed a race condition panic from concurrent access to a
+ shared metadata resource by introducing thread safety. (#3341)
+ * Fixed a bug where --posix-properties-style was not being chained
+ through the copy flow correctly. (#3401)
+ * Fixed a regression where in tandem use of --list-of-files
+ and --include-pattern no longer worked. (#3389)
+- from version 10.32.1
+ * Golang 1.24.11 -> 1.24.13
+- from version 10.32.0
+ * Added support for AMLFS style posix metadata. (#3317)
+ * Fixed a bug where hdi_isfolder metadata key would sometimes
+ not be sent in all lowercase, resulting in unexpected behavior
+ on the service side when fetching properties. (#3312)
+ * Fixed a typo in the benchmark command, to allow the --put-md5 flag to
work. (#3324)
+ * Fixed a bug where network errors would not be retried on. (#3338)
+ * Fixed a bug where unexpected requests would be logged in syslog. (#3339)
+ * Fixed a bug where pre-existing folders would be recreated. (#3295)
+ * Updated README to clarify supported source-destination pairs and
+ authorization mechanisms. (#3213)
+ * Updated format of wiki generated docs to improve readability. (#3311)
+ * AzCopy download URLs starting with
https://azcopyvnext-awgzd8g7aagqhzhe.b02.azurefd.net/
+ are no longer supported.
+- from version 10.32.0~preview.1
+ * Fixed a bug where throughput was not being displayed for copy and resume.
(#3271)
+ * Fixed a bug where S3 and GCP transfers would panic. (#3273)
+ * Refactored copy, sync, resume, login, logout, login status
+ business logic into the azcopy package.
+- Add CVE-2026-33186.patch to fix authorization bypass in grpc-go due to
improper
+ validation of the HTTP/2 :path pseudo-header (bsc#1260307, CVE-2026-33186)
+
+-------------------------------------------------------------------
Old:
----
azure-storage-azcopy-v10.31.1.tar.gz
New:
----
CVE-2026-33186.patch
azure-storage-azcopy-v10.32.2.tar.gz
----------(New B)----------
New: business logic into the azcopy package.
- Add CVE-2026-33186.patch to fix authorization bypass in grpc-go due to
improper
validation of the HTTP/2 :path pseudo-header (bsc#1260307, CVE-2026-33186)
----------(New E)----------
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ azure-storage-azcopy.spec ++++++
--- /var/tmp/diff_new_pack.z4woOJ/_old 2026-03-23 17:17:58.561170490 +0100
+++ /var/tmp/diff_new_pack.z4woOJ/_new 2026-03-23 17:17:58.561170490 +0100
@@ -23,7 +23,7 @@
%global import_path %{provider_prefix}
Name: azure-storage-azcopy
-Version: 10.31.1
+Version: 10.32.2
Release: 0
License: MIT
Summary: Microsoft Azure Storage data transfer utility
@@ -32,6 +32,8 @@
Source1: vendor.tar.gz
# PATCH-FIX-UPSTREAM - Add support for s390x architecture - gh/wastore/keyctl#2
Patch0: keyctl-add-s390x-support.patch
+# PATCH-FIX-UPSTREAM - grpc: enforce strict path checking for incoming
requests on the server
+Patch1: CVE-2026-33186.patch
BuildRequires: golang-packaging
BuildRequires: go >= 1.24
# Building with -buildmode=pie is currently unsupported on armv7l, i586,
riscv64 and s390x
@@ -50,6 +52,9 @@
pushd vendor/github.com/wastore/keyctl
%patch -P0 -p1
popd
+pushd vendor/google.golang.org/grpc
+%patch -P1 -p1
+popd
%build
%goprep %{import_path}
++++++ CVE-2026-33186.patch ++++++
>From a14945b6c915fc7efaa7e955875c412815a48ea3 Mon Sep 17 00:00:00 2001
From: Easwar Swaminathan <[email protected]>
Date: Tue, 17 Mar 2026 16:35:32 -0700
Subject: [PATCH] grpc: enforce strict path checking for incoming requests on
the server (#8985)
RELEASE NOTES:
* server: fix an authorization bypass where malformed :path headers
(missing the leading slash) could bypass path-based restricted "deny"
rules in interceptors like `grpc/authz`. Any request with a
non-canonical path is now immediately rejected with an `Unimplemented`
error.
---
internal/envconfig/envconfig.go | 16 +++++++++
server.go | 57 ++++++++++++++++++++++++---------
2 files changed, 57 insertions(+), 16 deletions(-)
diff --git a/internal/envconfig/envconfig.go b/internal/envconfig/envconfig.go
index e8dc7912..7ad6fb44 100644
--- a/internal/envconfig/envconfig.go
+++ b/internal/envconfig/envconfig.go
@@ -88,6 +88,22 @@ var (
// feature can be disabled by setting the environment variable
// GRPC_EXPERIMENTAL_PF_WEIGHTED_SHUFFLING to "false".
PickFirstWeightedShuffling =
boolFromEnv("GRPC_EXPERIMENTAL_PF_WEIGHTED_SHUFFLING", true)
+
+ // DisableStrictPathChecking indicates whether strict path checking is
+ // disabled. This feature can be disabled by setting the environment
+ // variable GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING to "true".
+ //
+ // When strict path checking is enabled, gRPC will reject requests with
+ // paths that do not conform to the gRPC over HTTP/2 specification
found at
+ // https://github.com/grpc/grpc/blob/master/doc/PROTOCOL-HTTP2.md.
+ //
+ // When disabled, gRPC will allow paths that do not contain a leading
slash.
+ // Enabling strict path checking is recommended for security reasons,
as it
+ // prevents potential path traversal vulnerabilities.
+ //
+ // A future release will remove this environment variable, enabling
strict
+ // path checking behavior unconditionally.
+ DisableStrictPathChecking =
boolFromEnv("GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING", false)
)
func boolFromEnv(envVar string, def bool) bool {
diff --git a/server.go b/server.go
index 1b5cefe8..8efb29a7 100644
--- a/server.go
+++ b/server.go
@@ -42,6 +42,7 @@ import (
"google.golang.org/grpc/internal"
"google.golang.org/grpc/internal/binarylog"
"google.golang.org/grpc/internal/channelz"
+ "google.golang.org/grpc/internal/envconfig"
"google.golang.org/grpc/internal/grpcsync"
"google.golang.org/grpc/internal/grpcutil"
istats "google.golang.org/grpc/internal/stats"
@@ -149,6 +150,8 @@ type Server struct {
serverWorkerChannel chan func()
serverWorkerChannelClose func()
+
+ strictPathCheckingLogEmitted atomic.Bool
}
type serverOptions struct {
@@ -1762,6 +1765,24 @@ func (s *Server) processStreamingRPC(ctx
context.Context, stream *transport.Serv
return ss.s.WriteStatus(statusOK)
}
+func (s *Server) handleMalformedMethodName(stream *transport.ServerStream, ti
*traceInfo) {
+ if ti != nil {
+ ti.tr.LazyLog(&fmtStringer{"Malformed method name %q",
[]any{stream.Method()}}, true)
+ ti.tr.SetError()
+ }
+ errDesc := fmt.Sprintf("malformed method name: %q", stream.Method())
+ if err := stream.WriteStatus(status.New(codes.Unimplemented, errDesc));
err != nil {
+ if ti != nil {
+ ti.tr.LazyLog(&fmtStringer{"%v", []any{err}}, true)
+ ti.tr.SetError()
+ }
+ channelz.Warningf(logger, s.channelz, "grpc:
Server.handleStream failed to write status: %v", err)
+ }
+ if ti != nil {
+ ti.tr.Finish()
+ }
+}
+
func (s *Server) handleStream(t transport.ServerTransport, stream
*transport.ServerStream) {
ctx := stream.Context()
ctx = contextWithServer(ctx, s)
@@ -1782,26 +1803,30 @@ func (s *Server) handleStream(t
transport.ServerTransport, stream *transport.Ser
}
sm := stream.Method()
- if sm != "" && sm[0] == '/' {
+ if sm == "" {
+ s.handleMalformedMethodName(stream, ti)
+ return
+ }
+ if sm[0] != '/' {
+ // TODO(easwars): Add a link to the CVE in the below log
messages once
+ // published.
+ if envconfig.DisableStrictPathChecking {
+ if old := s.strictPathCheckingLogEmitted.Swap(true);
!old {
+ channelz.Warningf(logger, s.channelz, "grpc:
Server.handleStream received malformed method name %q. Allowing it because the
environment variable GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING is set
to true, but this option will be removed in a future release.", sm)
+ }
+ } else {
+ if old := s.strictPathCheckingLogEmitted.Swap(true);
!old {
+ channelz.Warningf(logger, s.channelz, "grpc:
Server.handleStream rejected malformed method name %q. To temporarily allow
such requests, set the environment variable
GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING to true. Note that this is
not recommended as it may allow requests to bypass security policies.", sm)
+ }
+ s.handleMalformedMethodName(stream, ti)
+ return
+ }
+ } else {
sm = sm[1:]
}
pos := strings.LastIndex(sm, "/")
if pos == -1 {
- if ti != nil {
- ti.tr.LazyLog(&fmtStringer{"Malformed method name %q",
[]any{sm}}, true)
- ti.tr.SetError()
- }
- errDesc := fmt.Sprintf("malformed method name: %q",
stream.Method())
- if err := stream.WriteStatus(status.New(codes.Unimplemented,
errDesc)); err != nil {
- if ti != nil {
- ti.tr.LazyLog(&fmtStringer{"%v", []any{err}},
true)
- ti.tr.SetError()
- }
- channelz.Warningf(logger, s.channelz, "grpc:
Server.handleStream failed to write status: %v", err)
- }
- if ti != nil {
- ti.tr.Finish()
- }
+ s.handleMalformedMethodName(stream, ti)
return
}
service := sm[:pos]
--
2.53.0
++++++ _service ++++++
--- /var/tmp/diff_new_pack.z4woOJ/_old 2026-03-23 17:17:58.621172979 +0100
+++ /var/tmp/diff_new_pack.z4woOJ/_new 2026-03-23 17:17:58.625173144 +0100
@@ -3,8 +3,8 @@
<param name="url">https://github.com/Azure/azure-storage-azcopy</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
- <param name="versionformat">v10.31.1</param>
- <param name="revision">v10.31.1</param>
+ <param name="versionformat">v10.32.2</param>
+ <param name="revision">v10.32.2</param>
<param name="changesgenerate">disable</param>
</service>
<service name="recompress" mode="disabled">
@@ -15,7 +15,7 @@
<param name="basename">azure-storage-azcopy</param>
</service>
<service name="go_modules" mode="disabled">
- <param name="archive">azure-storage-azcopy-v10.31.1.tar.gz</param>
+ <param name="archive">azure-storage-azcopy-v10.32.2.tar.gz</param>
</service>
</services>
++++++ azure-storage-azcopy-v10.31.1.tar.gz ->
azure-storage-azcopy-v10.32.2.tar.gz ++++++
/work/SRC/openSUSE:Factory/azure-storage-azcopy/azure-storage-azcopy-v10.31.1.tar.gz
/work/SRC/openSUSE:Factory/.azure-storage-azcopy.new.8177/azure-storage-azcopy-v10.32.2.tar.gz
differ: char 12, line 1
++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/azure-storage-azcopy/vendor.tar.gz
/work/SRC/openSUSE:Factory/.azure-storage-azcopy.new.8177/vendor.tar.gz differ:
char 14, line 1