aboutsummaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
Diffstat (limited to 'util')
-rw-r--r--util/ChangeLog3
-rw-r--r--util/w32reg.c16
2 files changed, 15 insertions, 4 deletions
diff --git a/util/ChangeLog b/util/ChangeLog
index 4cb53c792..a782ee9c5 100644
--- a/util/ChangeLog
+++ b/util/ChangeLog
@@ -1,5 +1,8 @@
2005-02-03 Werner Koch <[email protected]>
+ * w32reg.c (read_w32_registry_string): Fallback to HKLM also for a
+ missing name.
+
* http.c (connect_server): Define ERR outside of the !W32 block.
2005-02-01 David Shaw <[email protected]>
diff --git a/util/w32reg.c b/util/w32reg.c
index edc77ced9..f8e81b478 100644
--- a/util/w32reg.c
+++ b/util/w32reg.c
@@ -1,5 +1,5 @@
/* w32reg.c - MS-Windows Registry access
- * Copyright (C) 1999, 2002 Free Software Foundation, Inc.
+ * Copyright (C) 1999, 2002, 2005 Free Software Foundation, Inc.
*
* This file is part of GnuPG.
*
@@ -77,14 +77,22 @@ read_w32_registry_string( const char *root, const char *dir, const char *name )
{
if (root)
return NULL; /* no need for a RegClose, so return direct */
- /* It seems to be common practise to fall back to HLM. */
+ /* It seems to be common practise to fall back to HKLM. */
if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle) )
return NULL; /* still no need for a RegClose, so return direct */
}
nbytes = 1;
- if( RegQueryValueEx( key_handle, name, 0, NULL, NULL, &nbytes ) )
- goto leave;
+ if( RegQueryValueEx( key_handle, name, 0, NULL, NULL, &nbytes ) ) {
+ if (root)
+ goto leave;
+ /* Try to fallback to HKLM also vor a missing value. */
+ RegCloseKey (key_handle);
+ if (RegOpenKeyEx (HKEY_LOCAL_MACHINE, dir, 0, KEY_READ, &key_handle) )
+ return NULL; /* Nope. */
+ if (RegQueryValueEx( key_handle, name, 0, NULL, NULL, &nbytes))
+ goto leave;
+ }
result = malloc( (n1=nbytes+1) );
if( !result )
goto leave;