Fix Zygote selinux code to support null values

Change-Id: I05f9189f11ffd6e6d6d32582b051a91845653ad7
diff --git a/src/native/dalvik_system_Zygote.cc b/src/native/dalvik_system_Zygote.cc
index 5fb435c..1dd6c59 100644
--- a/src/native/dalvik_system_Zygote.cc
+++ b/src/native/dalvik_system_Zygote.cc
@@ -416,15 +416,25 @@
 
 #if defined(HAVE_ANDROID_OS)
     {
-      ScopedUtfChars se_info(env, java_se_info);
-      CHECK(se_info.c_str() != NULL);
-      ScopedUtfChars se_name(env, java_se_name);
-      CHECK(se_name.c_str() != NULL);
-      rc = selinux_android_setcontext(uid, is_system_server, se_info.c_str(), se_name.c_str());
+      const char* se_info_c_str = NULL;
+      UniquePtr<ScopedUtfChars> se_info;
+      if (java_se_info != NULL) {
+          se_info.reset(new ScopedUtfChars(env, java_se_info));
+          se_info_c_str = se_info->c_str();
+          CHECK(se_info_c_str != NULL);
+      }
+      const char* se_name_c_str = NULL;
+      UniquePtr<ScopedUtfChars> se_name;
+      if (java_se_name != NULL) {
+          se_name.reset(new ScopedUtfChars(env, java_se_name));
+          se_name_c_str = se_name->c_str();
+          CHECK(se_name_c_str != NULL);
+      }
+      rc = selinux_android_setcontext(uid, is_system_server, se_info_c_str, se_name_c_str);
       if (rc == -1) {
         PLOG(FATAL) << "selinux_android_setcontext(" << uid << ", "
                     << (is_system_server ? "true" : "false") << ", "
-                    << "\"" << se_info.c_str() << "\", \"" << se_name.c_str() << "\") failed";
+                    << "\"" << se_info_c_str << "\", \"" << se_name_c_str << "\") failed";
       }
     }
 #else