-DPA_ALSA_PROFILE_SETS_DIR=\"$(alsaprofilesetsdir)\"
AM_CFLAGS = \
$(PTHREAD_CFLAGS) \
- $(CYNARA_CFLAGS) \
-DPA_SRCDIR=\"$(abs_srcdir)\" \
-DPA_BUILDDIR=\"$(abs_builddir)\"
AM_CXXFLAGS = $(AM_CFLAGS)
SERVER_CFLAGS = -D__INCLUDED_FROM_PULSE_AUDIO
AM_LIBADD = $(PTHREAD_LIBS) $(INTLLIBS)
-AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS) $(CYNARA_LIBS)
+AM_LDADD = $(PTHREAD_LIBS) $(INTLLIBS)
AM_LDFLAGS = $(NODELETE_LDFLAGS)
+if USE_SECURITY
+AM_CFLAGS += $(CYNARA_CFLAGS) -DUSE_SECURITY
+AM_LDADD += $(CYNARA_LIBS)
+endif
+
if HAVE_GCOV
AM_CFLAGS+=$(GCOV_CFLAGS)
AM_CXXFLAGS+=$(GCOV_CFLAGS)
libprotocol_http_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version
libprotocol_http_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINOR@.la libpulsecommon-@PA_MAJORMINOR@.la libpulse.la
-libprotocol_native_la_SOURCES = pulsecore/protocol-native.c pulsecore/protocol-native.h pulsecore/native-common.h \
-pulsecore/cynara.c pulsecore/cynara.h
+libprotocol_native_la_SOURCES = pulsecore/protocol-native.c pulsecore/protocol-native.h pulsecore/native-common.h
libprotocol_native_la_CFLAGS = $(AM_CFLAGS) $(SERVER_CFLAGS)
libprotocol_native_la_LDFLAGS = $(AM_LDFLAGS) -avoid-version
libprotocol_native_la_LIBADD = $(AM_LIBADD) libpulsecore-@PA_MAJORMINOR@.la libpulsecommon-@PA_MAJORMINOR@.la libpulse.la
libprotocol_native_la_CFLAGS += $(DBUS_CFLAGS)
libprotocol_native_la_LIBADD += $(DBUS_LIBS)
endif
+if USE_SECURITY
+libprotocol_native_la_SOURCES += pulsecore/cynara.c pulsecore/cynara.h
+endif
libtunnel_manager_la_SOURCES = \
modules/tunnel-manager/remote-device.c modules/tunnel-manager/remote-device.h \
pa_stream_unref(s);
}
+static bool is_virtual_stream(pa_proplist* p) {
+ const char *media_name = NULL;
+ bool is_virtual = false;
+
+ media_name = pa_proplist_gets(p, PA_PROP_MEDIA_NAME);
+ if (media_name && pa_streq(media_name, "VIRTUAL_STREAM"))
+ is_virtual = true;
+
+ pa_log_info("Is virtual stream : %s", pa_yes_no(is_virtual));
+
+ return is_virtual;
+}
+
static int create_stream(
pa_stream_direction_t direction,
pa_stream *s,
(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));
PA_TAG_INVALID);
pa_tagstruct_put_cvolume(t, volume);
- } else
+ } else {
pa_tagstruct_putu32(t, s->buffer_attr.fragsize);
+#ifdef __TIZEN__
+ pa_tagstruct_put_boolean(t, is_virtual_stream(s->proplist));
+#endif
+ }
if (s->context->version >= 12) {
pa_tagstruct_put(
#include "protocol-native.h"
-#ifdef __TIZEN__
+#ifdef USE_SECURITY
#include <pulsecore/cynara.h>
#include <pulsecore/iochannel.h>
#endif
/* structure management */
+#ifdef USE_SECURITY
+static int _get_connection_out_fd(pa_native_connection *c) {
+ return pa_iochannel_get_send_fd(pa_pstream_get_iochannel(pa_native_connection_get_pstream(c)));
+}
+#endif
+
/* Called from main context */
static void upload_stream_unlink(upload_stream *s) {
pa_assert(s);
pa_idxset *formats = NULL;
uint32_t i;
-#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;
- }
- }
+#ifdef USE_SECURITY
+ bool is_virtual_stream = false;
#endif
pa_native_connection_assert_ref(c);
CHECK_VALIDITY_GOTO(c->pstream, !source_name || source_index == PA_INVALID_INDEX, tag, PA_ERR_INVALID, finish);
#ifdef USE_SECURITY
- CHECK_VALIDITY(c->pstream, pa_pstream_check_security(c->pstream), tag, PA_ERR_ACCESS_BY_SECURITY);
+ 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) {
+ CHECK_VALIDITY(c->pstream, cynara_check_privilege(_get_connection_out_fd(c), RECORDER_PRIVILEGE),
+ tag, PA_ERR_ACCESS_BY_SECURITY);
+ }
#endif /* USE_SECURITY */
+
p = pa_proplist_new();
if (name)
struct timeval tv, now;
uint32_t idx;
- #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;
- }
- #endif
-
pa_native_connection_assert_ref(c);
pa_assert(t);
const char *name = NULL;
const char *client_name;
- #ifdef __TIZEN__
- int fd = pa_iochannel_get_send_fd(pa_pstream_get_iochannel(pa_native_connection_get_pstream(c)));
- if (!cynara_check_privilege(fd, VOLUME_SET_PRIVILEGE)) {
- pa_pstream_send_simple_ack(c->pstream, tag);
- return;
- }
- #endif
-
pa_native_connection_assert_ref(c);
pa_assert(t);
CHECK_VALIDITY(c->pstream, (idx != PA_INVALID_INDEX) ^ (name != NULL), tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, pa_cvolume_valid(&volume), tag, PA_ERR_INVALID);
+#ifdef USE_SECURITY
+ CHECK_VALIDITY(c->pstream, cynara_check_privilege(_get_connection_out_fd(c), VOLUME_SET_PRIVILEGE),
+ tag, PA_ERR_ACCESS_BY_SECURITY);
+#endif /* USE_SECURITY */
+
switch (command) {
case PA_COMMAND_SET_SINK_VOLUME:
const char *name = NULL;
const char *client_name;
- #ifdef __TIZEN__
- int fd = pa_iochannel_get_send_fd(pa_pstream_get_iochannel(pa_native_connection_get_pstream(c)));
- if (!cynara_check_privilege(fd, VOLUME_SET_PRIVILEGE)) {
- pa_pstream_send_simple_ack(c->pstream, tag);
- return;
- }
- #endif
-
pa_native_connection_assert_ref(c);
pa_assert(t);
CHECK_VALIDITY(c->pstream, idx != PA_INVALID_INDEX || name, tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, idx == PA_INVALID_INDEX || !name, tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, !name || idx == PA_INVALID_INDEX, tag, PA_ERR_INVALID);
+#ifdef USE_SECURITY
+ CHECK_VALIDITY(c->pstream, cynara_check_privilege(_get_connection_out_fd(c), VOLUME_SET_PRIVILEGE),
+ tag, PA_ERR_ACCESS_BY_SECURITY);
+#endif /* USE_SECURITY */
switch (command) {
pa_source_output *so = NULL;
const char *name = NULL, *client_name;
- #ifdef __TIZEN__
- int fd = pa_iochannel_get_send_fd(pa_pstream_get_iochannel(pa_native_connection_get_pstream(c)));
- if (!cynara_check_privilege(fd, VOLUME_SET_PRIVILEGE)) {
- pa_pstream_send_simple_ack(c->pstream, tag);
- return;
- }
- #endif
-
pa_native_connection_assert_ref(c);
pa_assert(t);
CHECK_VALIDITY(c->pstream, c->authorized, tag, PA_ERR_ACCESS);
CHECK_VALIDITY(c->pstream, !name || pa_namereg_is_valid_name_or_wildcard(name, command == PA_COMMAND_SET_SINK_MUTE ? PA_NAMEREG_SINK : PA_NAMEREG_SOURCE), tag, PA_ERR_INVALID);
CHECK_VALIDITY(c->pstream, (idx != PA_INVALID_INDEX) ^ (name != NULL), tag, PA_ERR_INVALID);
+#ifdef USE_SECURITY
+ CHECK_VALIDITY(c->pstream, cynara_check_privilege(_get_connection_out_fd(c), VOLUME_SET_PRIVILEGE),
+ tag, PA_ERR_ACCESS_BY_SECURITY);
+#endif /* USE_SECURITY */
switch (command) {