From b394e717d14048a2d5d4bf5abdbf68de44e038c9 Mon Sep 17 00:00:00 2001 From: Mok Jeongho Date: Wed, 2 Dec 2015 17:22:23 +0900 Subject: [PATCH] Do not check privilege on virtual stream. [Version] 5.0-50 [Profile] Common [Issue Type] Fix Bug Change-Id: I34ef8aaed5b1f7a8e431d57d9b1ab61433f50253 --- packaging/pulseaudio.spec | 2 +- src/pulse/stream.c | 12 ++++++++++++ src/pulsecore/protocol-native.c | 18 ++++++++++++------ 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/packaging/pulseaudio.spec b/packaging/pulseaudio.spec index 6c8410a..6f05b61 100644 --- a/packaging/pulseaudio.spec +++ b/packaging/pulseaudio.spec @@ -10,7 +10,7 @@ Name: pulseaudio Summary: Improved Linux sound server Version: 5.0 -Release: 49 +Release: 50 Group: Multimedia/Audio License: GPL-2.0+ and LGPL-2.1+ URL: http://pulseaudio.org diff --git a/src/pulse/stream.c b/src/pulse/stream.c index d60934e..77d7a74 100644 --- a/src/pulse/stream.c +++ b/src/pulse/stream.c @@ -1266,6 +1266,18 @@ static int create_stream( (uint32_t) (s->direction == PA_STREAM_PLAYBACK ? PA_COMMAND_CREATE_PLAYBACK_STREAM : PA_COMMAND_CREATE_RECORD_STREAM), &tag); +#ifdef __TIZEN__ + if (direction == PA_STREAM_RECORD) { + const char *media_name = NULL; + bool is_virtual = FALSE; + media_name = pa_proplist_gets(s->proplist, PA_PROP_MEDIA_NAME); + if (media_name && pa_streq(media_name, "VIRTUAL_STREAM")) + is_virtual = TRUE; + pa_log_info("Is this stream virtual : %s", pa_yes_no(is_virtual)); + pa_tagstruct_put_boolean(t, is_virtual); + } +#endif + if (s->context->version < 13) pa_tagstruct_puts(t, pa_proplist_gets(s->proplist, PA_PROP_MEDIA_NAME)); diff --git a/src/pulsecore/protocol-native.c b/src/pulsecore/protocol-native.c index eb2f39a..d1fdedb 100644 --- a/src/pulsecore/protocol-native.c +++ b/src/pulsecore/protocol-native.c @@ -2458,13 +2458,19 @@ static void command_create_record_stream(pa_pdispatch *pd, uint32_t command, uin pa_idxset *formats = NULL; uint32_t i; - #ifdef __TIZEN__ - int fd = pa_iochannel_get_send_fd(pa_pstream_get_iochannel(pa_native_connection_get_pstream(c))); - if (!cynara_check_privilege(fd, RECORDER_PRIVILEGE)) { - pa_pstream_send_simple_ack(c->pstream, tag); - return; +#ifdef __TIZEN__ + { + bool is_virtual_stream = FALSE; + int fd = pa_iochannel_get_send_fd(pa_pstream_get_iochannel(pa_native_connection_get_pstream(c))); + + pa_tagstruct_get_boolean(t, &is_virtual_stream); + pa_log_info("is virtual stream : %s", pa_yes_no(is_virtual_stream)); + if (!is_virtual_stream && !cynara_check_privilege(fd, RECORDER_PRIVILEGE)) { + pa_pstream_send_simple_ack(c->pstream, tag); + return; + } } - #endif +#endif pa_native_connection_assert_ref(c); pa_assert(t); -- 2.7.4