Fix some vulnerability (Null Pointer Dereference) defects
[platform/core/multimedia/libmm-sound.git] / mm_sound_device.c
index ee71480..ad2fa62 100644 (file)
@@ -30,8 +30,8 @@
 
 #define VOLUME_TYPE_LEN 64
 
-mm_sound_device_list_t g_device_list;
-pthread_mutex_t g_thread_mutex = PTHREAD_MUTEX_INITIALIZER;
+static mm_sound_device_list_t g_device_list;
+static pthread_mutex_t g_thread_mutex = PTHREAD_MUTEX_INITIALIZER;
 
 static int _check_for_valid_mask(int flags)
 {
@@ -91,6 +91,8 @@ static int __convert_device_type_to_enum(char *device_type, mm_sound_device_type
                *device_type_enum = MM_SOUND_DEVICE_TYPE_MIRRORING;
        } else if (!strncmp(device_type, "usb-audio", VOLUME_TYPE_LEN)) {
                *device_type_enum = MM_SOUND_DEVICE_TYPE_USB_AUDIO;
+       } else if (!strncmp(device_type, "network", VOLUME_TYPE_LEN)) {
+               *device_type_enum = MM_SOUND_DEVICE_TYPE_NETWORK;
        } else {
                ret = MM_ERROR_INVALID_ARGUMENT;
                debug_error("not supported device_type(%s), err(0x%08x)", device_type, ret);
@@ -529,6 +531,28 @@ int mm_sound_is_stream_on_device(int stream_id, MMSoundDevice_t device_h, bool *
 }
 
 EXPORT_API
+int mm_sound_is_stream_on_device_by_id(int stream_id, int device_id, bool *is_on)
+{
+       int ret = MM_ERROR_NONE;
+       bool _is_on = false;
+
+       if (!is_on) {
+               debug_error("invalid argument");
+               return MM_ERROR_INVALID_ARGUMENT;
+       }
+
+       if ((ret = mm_sound_client_is_stream_on_device(stream_id, device_id, &_is_on)) < 0) {
+               debug_error("Failed to query is stream on");
+               return MM_ERROR_SOUND_INTERNAL;
+       }
+
+       debug_log("device(%d) %s stream(%d)", device_id, _is_on ? "has" : "doesn't have", stream_id);
+       *is_on = _is_on;
+
+       return ret;
+}
+
+EXPORT_API
 int mm_sound_is_device_running(MMSoundDevice_t device_h, bool *is_running)
 {
        mm_sound_device_t *device = (mm_sound_device_t*)device_h;