Commit ee77378d9b94bd9071fd99bad3110a6abf4716b3

Russell Belfer 2013-08-05T13:33:44

Merge pull request #1763 from nvloff/nameless_submodule_segfault submodule: check alloc and name presence

diff --git a/src/submodule.c b/src/submodule.c
index b4e9175..40bda9a 100644
--- a/src/submodule.c
+++ b/src/submodule.c
@@ -1025,6 +1025,7 @@ static int submodule_get(
 
 	if (!git_strmap_valid_index(smcfg, pos)) {
 		sm = submodule_alloc(repo, name);
+		GITERR_CHECK_ALLOC(sm);
 
 		/* insert value at name - if another thread beats us to it, then use
 		 * their record and release our own.
@@ -1101,8 +1102,10 @@ static int submodule_load_from_config(
 
 	namestart = key + strlen("submodule.");
 	property  = strrchr(namestart, '.');
-	if (property == NULL)
+
+	if (!property || (property == namestart))
 		return 0;
+
 	property++;
 	is_path = (strcasecmp(property, "path") == 0);
 
diff --git a/tests-clar/resources/submodules/gitmodules b/tests-clar/resources/submodules/gitmodules
index 1262f8b..2798b69 100644
--- a/tests-clar/resources/submodules/gitmodules
+++ b/tests-clar/resources/submodules/gitmodules
@@ -1,3 +1,6 @@
 [submodule "testrepo"]
 	path = testrepo
+	url = 
+[submodule ""]
+	path = testrepo
 	url = 
\ No newline at end of file