Merge "sh_binary: Use pointers for optional attributes"
diff --git a/bp2build/sh_conversion_test.go b/bp2build/sh_conversion_test.go
index f6d2a20..ac89087 100644
--- a/bp2build/sh_conversion_test.go
+++ b/bp2build/sh_conversion_test.go
@@ -73,3 +73,20 @@
 			})},
 	})
 }
+
+func TestShBinaryDefaults(t *testing.T) {
+	runShBinaryTestCase(t, bp2buildTestCase{
+		description:                "sh_binary test",
+		moduleTypeUnderTest:        "sh_binary",
+		moduleTypeUnderTestFactory: sh.ShBinaryFactory,
+		blueprint: `sh_binary {
+    name: "foo",
+    src: "foo.sh",
+    bazel_module: { bp2build_available: true },
+}`,
+		expectedBazelTargets: []string{
+			makeBazelTarget("sh_binary", "foo", attrNameToString{
+				"srcs": `["foo.sh"]`,
+			})},
+	})
+}
diff --git a/sh/sh_binary.go b/sh/sh_binary.go
index e1df8ac..b1d1bb2 100644
--- a/sh/sh_binary.go
+++ b/sh/sh_binary.go
@@ -511,8 +511,8 @@
 
 type bazelShBinaryAttributes struct {
 	Srcs     bazel.LabelListAttribute
-	Filename string
-	Sub_dir  string
+	Filename *string
+	Sub_dir  *string
 	// Bazel also supports the attributes below, but (so far) these are not required for Bionic
 	// deps
 	// data
@@ -538,14 +538,14 @@
 	srcs := bazel.MakeLabelListAttribute(
 		android.BazelLabelForModuleSrc(ctx, []string{*m.properties.Src}))
 
-	var filename string
+	var filename *string
 	if m.properties.Filename != nil {
-		filename = *m.properties.Filename
+		filename = m.properties.Filename
 	}
 
-	var subDir string
+	var subDir *string
 	if m.properties.Sub_dir != nil {
-		subDir = *m.properties.Sub_dir
+		subDir = m.properties.Sub_dir
 	}
 
 	attrs := &bazelShBinaryAttributes{