Skip to content

Commit 0d3092f

Browse files
committed
internal/syscall/windows/registry: remove TestWalkFullRegistry due to false assumptions
This test's existence was predicated upon assumptions about the full range of known data types and known data into those types. However, we've learned from Microsoft that there are several undocumented secret registry types that are in use by various parts of Windows, and we've learned from inspection that many Microsoft uses of registry types don't strictly adhere to the recommended value size. It's therefore foolhardy to make any assumptions about what goes in and out of the registry, and so this test, as well as its "blacklist", are meaningless. Fixes #35084 Change-Id: I6c3fe5fb0e740e88858321b3b042c0ff1a23284e Reviewed-on: https://go-review.googlesource.com/c/go/+/203604 Run-TryBot: Jason A. Donenfeld <[email protected]> Reviewed-by: Alex Brainman <[email protected]>
1 parent 0f55994 commit 0d3092f

1 file changed

Lines changed: 0 additions & 98 deletions

File tree

src/internal/syscall/windows/registry/registry_test.go

Lines changed: 0 additions & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -522,104 +522,6 @@ func TestValues(t *testing.T) {
522522
deleteValues(t, k)
523523
}
524524

525-
// These are known to be broken due to Windows bugs. See https://golang.org/issue/35084
526-
var blackListedKeys = map[string]bool{
527-
`HKCU\Software\Microsoft\Windows\CurrentVersion\Group Policy\`: true,
528-
`HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Group Policy\`: true,
529-
`HKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Group Policy\`: true,
530-
`HKLM\SYSTEM\ControlSet001\`: true,
531-
`HKLM\SYSTEM\ControlSet002\`: true,
532-
`HKLM\SYSTEM\CurrentControlSet\`: true,
533-
`HKLM\SYSTEM\DriverDatabase\`: true,
534-
`HKU\`: true, // Rather unfortunate, but SIDs are hard to predict.
535-
}
536-
537-
func walkKey(t *testing.T, k registry.Key, kname string) {
538-
if blackListedKeys[kname+`\`] {
539-
return
540-
}
541-
names, err := k.ReadValueNames(-1)
542-
if err != nil {
543-
t.Fatalf("reading value names of %#q failed: %v", kname+`\`, err)
544-
}
545-
for _, name := range names {
546-
if blackListedKeys[kname+`\`+name] {
547-
continue
548-
}
549-
_, valtype, err := k.GetValue(name, nil)
550-
if err != nil {
551-
t.Fatalf("reading value type of %#q in %#q failed: %v", name, kname+`\`, err)
552-
}
553-
switch valtype {
554-
case registry.NONE:
555-
case registry.SZ:
556-
_, _, err := k.GetStringValue(name)
557-
if err != nil {
558-
t.Errorf("getting %#q string value in %#q failed: %v", name, kname+`\`, err)
559-
}
560-
case registry.EXPAND_SZ:
561-
s, _, err := k.GetStringValue(name)
562-
if err != nil {
563-
t.Errorf("getting %#q expand string value in %#q failed: %v", name, kname+`\`, err)
564-
}
565-
_, err = registry.ExpandString(s)
566-
if err != nil {
567-
t.Errorf("expanding %#q value in %#q failed: %v", name, kname+`\`, err)
568-
}
569-
case registry.DWORD, registry.QWORD:
570-
_, _, err := k.GetIntegerValue(name)
571-
if err != nil {
572-
t.Errorf("getting %#q integer value in %#q failed: %v", name, kname+`\`, err)
573-
}
574-
case registry.BINARY:
575-
_, _, err := k.GetBinaryValue(name)
576-
if err != nil {
577-
t.Errorf("getting %#q binary value in %#q failed: %v", name, kname+`\`, err)
578-
}
579-
case registry.MULTI_SZ:
580-
_, _, err := k.GetStringsValue(name)
581-
if err != nil {
582-
t.Errorf("getting %#q strings value in %#q failed: %v", name, kname+`\`, err)
583-
}
584-
case registry.FULL_RESOURCE_DESCRIPTOR, registry.RESOURCE_LIST, registry.RESOURCE_REQUIREMENTS_LIST:
585-
// TODO: not implemented
586-
default:
587-
t.Fatalf("%#q in %#q has unknown value type %d", name, kname+`\`, valtype)
588-
}
589-
}
590-
591-
names, err = k.ReadSubKeyNames(-1)
592-
if err != nil {
593-
t.Fatalf("reading sub-keys of %#q failed: %v", kname+`\`, err)
594-
}
595-
for _, name := range names {
596-
func() {
597-
subk, err := registry.OpenKey(k, name, registry.ENUMERATE_SUB_KEYS|registry.QUERY_VALUE)
598-
if err != nil {
599-
if err == syscall.ERROR_ACCESS_DENIED {
600-
// ignore error, if we are not allowed to access this key
601-
return
602-
}
603-
t.Fatalf("opening sub-keys %#q in %#q failed: %v", name, kname+`\`, err)
604-
}
605-
defer subk.Close()
606-
607-
walkKey(t, subk, kname+`\`+name)
608-
}()
609-
}
610-
}
611-
612-
func TestWalkFullRegistry(t *testing.T) {
613-
if testing.Short() {
614-
t.Skip("skipping long running test in short mode")
615-
}
616-
walkKey(t, registry.CLASSES_ROOT, "HKCR")
617-
walkKey(t, registry.CURRENT_USER, "HKCU")
618-
walkKey(t, registry.LOCAL_MACHINE, "HKLM")
619-
walkKey(t, registry.USERS, "HKU")
620-
walkKey(t, registry.CURRENT_CONFIG, "HKCC")
621-
}
622-
623525
func TestExpandString(t *testing.T) {
624526
got, err := registry.ExpandString("%PATH%")
625527
if err != nil {

0 commit comments

Comments
 (0)