git-r3.eclass: Escape all weird chars in submodule names, #606950
authorMichał Górny <mgorny@gentoo.org>
Wed, 25 Jan 2017 13:22:17 +0000 (14:22 +0100)
committerMichał Górny <mgorny@gentoo.org>
Wed, 25 Jan 2017 13:24:04 +0000 (14:24 +0100)
eclass/git-r3.eclass

index f76f1a7ea5966636efe2c07c5689384b1f7fedcf..d105e50ed144a6c686319ed3fde6d68bc54b5944 100644 (file)
@@ -447,10 +447,11 @@ _git-r3_set_submodules() {
                        submodule."${subname}".update)
                [[ ${upd} == none ]] && continue
 
-               # https://github.com/git/git/blob/master/refs.c#L39
-               # for now, we just filter /. because of #572312
-               local enc_subname=${subname//\/.//_}
-               [[ ${enc_subname} == .* ]] && enc_subname=_${enc_subname#.}
+               # https://github.com/git/git/blob/master/refs.c#L31
+               # we are more restrictive than git itself but that should not
+               # cause any issues, #572312, #606950
+               # TODO: check escaped names for collisions
+               local enc_subname=${subname//[^a-zA-Z0-9-]/_}
 
                submodules+=(
                        "${enc_subname}"