]> Cypherpunks repositories - gostls13.git/commitdiff
os: fix findOneDriveDir to expand strings that contain environment variables
authorDaniela Petruzalek <daniela.petruzalek@gmail.com>
Wed, 4 Jan 2023 15:26:03 +0000 (15:26 +0000)
committerGopher Robot <gobot@golang.org>
Sat, 28 Jan 2023 18:50:46 +0000 (18:50 +0000)
On Windows the registry data type REG_EXPAND_SZ indicates that the string requires expansion
of environment variables. The existing implementation doesn't take that into consideration
and just returns the unexpanded string, ignoring the registry type. This implementation ensures
that environment variables are properly expanded when needed.

Fixes #57576

Change-Id: Ia02c1b05a4cf6eaaffb3be88ce1c9ee100db250f
Reviewed-on: https://go-review.googlesource.com/c/go/+/460535
Auto-Submit: Bryan Mills <bcmills@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Reviewed-by: Quim Muntal <quimmuntal@gmail.com>
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>

src/os/os_windows_test.go

index 1133639105453aba0e6f3cd37b363784f772c530..21a8c21d1e466b83a1cf2fcd123dad4ccf728766 100644 (file)
@@ -872,10 +872,19 @@ func findOneDriveDir() (string, error) {
        }
        defer k.Close()
 
-       path, _, err := k.GetStringValue("UserFolder")
+       path, valtype, err := k.GetStringValue("UserFolder")
        if err != nil {
                return "", fmt.Errorf("reading UserFolder failed: %v", err)
        }
+
+       if valtype == registry.EXPAND_SZ {
+               expanded, err := registry.ExpandString(path)
+               if err != nil {
+                       return "", fmt.Errorf("expanding UserFolder failed: %v", err)
+               }
+               path = expanded
+       }
+
        return path, nil
 }