audioserver: Loose audio server socket file and share memory permission [1/1]

PD#TV-47395

Problem:
The shared memory and local socket file
permission is set to audio group only,
but app mode runs as non-root and it
cannot communicate with audio server

Solution:
Loose audio server socket file and share memory permission

Verify:
Roku

Change-Id: I2080dee43027847db26c0d17798469f16bda1df4
Signed-off-by: wei.du <wei.du@amlogic.com>
diff --git a/src/audio_if_client.cpp b/src/audio_if_client.cpp
index 6f7f0a2..70e41b0 100644
--- a/src/audio_if_client.cpp
+++ b/src/audio_if_client.cpp
@@ -475,7 +475,7 @@
   }
 
   client = new AudioClient(
-    grpc::CreateChannel((url) ? url : "unix:///opt/audio_socket",
+    grpc::CreateChannel((url) ? url : "unix:///tmp/audio_socket",
                         grpc::InsecureChannelCredentials()));
 
   *dev = &device;
diff --git a/src/audio_server.cpp b/src/audio_server.cpp
index ffe0625..bedeb6e 100644
--- a/src/audio_server.cpp
+++ b/src/audio_server.cpp
@@ -882,10 +882,19 @@
 std::mutex AudioServiceImpl::map_out_mutex_;
 std::mutex AudioServiceImpl::map_in_mutex_;
 
+static void SetAudioPermissions(const char* file_path){
+  struct stat buf;
+  if (stat(file_path, &buf) != 0)
+    return;
+
+  chmod(file_path, (buf.st_mode & 0711) | 0066);
+}
+
 void RunServer()
 {
   const char *url = std::getenv("AUDIO_SERVER_SOCKET");
-  std::string server_address("unix:///opt/audio_socket");
+  std::string socket_location("/tmp/audio_socket");
+  std::string server_address("unix://" + socket_location);
   AudioServiceImpl service;
   if (url) {
       server_address = url;
@@ -894,6 +903,8 @@
   builder.AddListeningPort(server_address, grpc::InsecureServerCredentials());
   builder.RegisterService(&service);
   std::unique_ptr<Server> server(builder.BuildAndStart());
+  SetAudioPermissions(socket_location.c_str());
+  SetAudioPermissions("/dev/shm/AudioServiceShmem");
   std::cout << "[AudioServer] listening on " << server_address << std::endl;
   server->Wait();
 }