device-manager, stream-manager: Add to check valid stream role 00/179200/3 accepted/tizen/unified/20180611.015423 submit/tizen/20180607.021137
authorSangchul Lee <sc11.lee@samsung.com>
Wed, 16 May 2018 08:14:02 +0000 (17:14 +0900)
committerSangchul Lee <sc11.lee@samsung.com>
Fri, 1 Jun 2018 08:46:22 +0000 (17:46 +0900)
pa_stream_manager_is_valid_stream_role() is added.

[Version] 11.1.11
[Issue Type] Enhancement

Change-Id: I9448722e66212ca26c6d09f9e645f0ad8717ab67
Signed-off-by: Sangchul Lee <sc11.lee@samsung.com>
packaging/pulseaudio-modules-tizen.spec
src/device-manager.c
src/stream-manager.c
src/stream-manager.h

index 68c3212..32385a7 100644 (file)
@@ -1,6 +1,6 @@
 Name:             pulseaudio-modules-tizen
 Summary:          Pulseaudio modules for Tizen
-Version:          11.1.10
+Version:          11.1.11
 Release:          0
 Group:            Multimedia/Audio
 License:          LGPL-2.1+
index 430ce07..f04a9d8 100644 (file)
@@ -3501,6 +3501,10 @@ static void handle_set_specific_stream_only(DBusConnection *conn, DBusMessage *m
         pa_dbus_send_error(conn, msg, DBUS_ERROR_NOT_SUPPORTED, "%s", "org.tizen.multimedia.audio.PolicyInternal");
         return;
     }
+    if (!pa_stream_manager_is_valid_stream_role(dm->core, stream_role)) {
+        pa_dbus_send_error(conn, msg, DBUS_ERROR_NOT_SUPPORTED, "%s", "org.tizen.multimedia.audio.InvalidArgument");
+        return;
+    }
 
     device->specified_stream_role = stream_role;
 
index 4f1fdb6..f88750b 100644 (file)
@@ -3104,6 +3104,24 @@ bool pa_stream_manager_check_filter_apply_stream(void *stream, stream_type_t str
     return is_filter_apply_stream(stream, stream_type);
 }
 
+bool pa_stream_manager_is_valid_stream_role(pa_core *c, const char *role) {
+    pa_stream_manager *m;
+
+    pa_assert(c);
+    pa_assert(role);
+
+    if (!(m = pa_shared_get(c, SHARED_STREAM_MANAGER))) {
+        pa_log_error("could not get shared data");
+        return false;
+    }
+    if (!pa_hashmap_get(m->stream_infos, role)) {
+        pa_log_error("%s is not valid role", role);
+        return false;
+    }
+
+    return true;
+}
+
 pa_stream_manager* pa_stream_manager_get(pa_core *c) {
     pa_stream_manager *m;
 
index 979672a..85385ff 100644 (file)
@@ -146,6 +146,7 @@ typedef struct _hook_call_data_for_update_info {
 int32_t pa_stream_manager_get_route_type(void *stream, stream_type_t stream_type, bool is_new_data, stream_route_type_t *stream_route_type);
 bool pa_stream_manager_check_name_is_vstream(void *stream, stream_type_t type, bool is_new_data);
 bool pa_stream_manager_check_filter_apply_stream(void *stream, stream_type_t stream_type);
+bool pa_stream_manager_is_valid_stream_role(pa_core *c, const char *role);
 
 pa_stream_manager* pa_stream_manager_get(pa_core *c);
 pa_stream_manager* pa_stream_manager_ref(pa_stream_manager *m);