svn commit: samba r5680 - in branches/SAMBA_4_0/source/lib/registry/tools: .

jelmer at samba.org jelmer at samba.org
Mon Mar 7 12:02:48 GMT 2005


Author: jelmer
Date: 2005-03-07 12:02:48 +0000 (Mon, 07 Mar 2005)
New Revision: 5680

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=5680

Log:
Don't crash if none of the predefined keys is available (reported by Alexander)

Modified:
   branches/SAMBA_4_0/source/lib/registry/tools/regshell.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/registry/tools/regshell.c
===================================================================
--- branches/SAMBA_4_0/source/lib/registry/tools/regshell.c	2005-03-07 05:12:33 UTC (rev 5679)
+++ branches/SAMBA_4_0/source/lib/registry/tools/regshell.c	2005-03-07 12:02:48 UTC (rev 5680)
@@ -408,9 +408,35 @@
 	}
 
 	if (h) {
-		/*FIXME: What if HKEY_CLASSES_ROOT is not present ? */
-		reg_get_predefined_key(h, HKEY_CLASSES_ROOT, &curkey);
+		enum reg_predefined_key try_hkeys[] = {
+			HKEY_CLASSES_ROOT,
+			HKEY_CURRENT_USER,
+			HKEY_LOCAL_MACHINE,
+			HKEY_USERS,
+			HKEY_PERFORMANCE_DATA,
+			HKEY_CURRENT_CONFIG,
+			HKEY_DYN_DATA,
+			HKEY_PERFORMANCE_TEXT,
+			HKEY_PERFORMANCE_NLSTEXT,
+			0
+		};
+		int i;
+
+		for (i = 0; try_hkeys[i]; i++) {
+			WERROR err;
+			err = reg_get_predefined_key(h, HKEY_CLASSES_ROOT, &curkey);
+			if (W_ERROR_IS_OK(err)) {
+				break;
+			} else {
+				curkey = NULL;
+			}
+		}
 	}
+
+	if (!curkey) {
+		fprintf(stderr, "Unable to access any of the predefined keys\n");
+		return -1;
+	}
 	
 	poptFreeContext(pc);
 	



More information about the samba-cvs mailing list