sound-player: Fix INTEGER_OVERFLOW defect 77/274077/4
authorSeungbae Shin <seungbae.shin@samsung.com>
Thu, 21 Apr 2022 03:52:07 +0000 (12:52 +0900)
committerSeungbae Shin <seungbae.shin@samsung.com>
Thu, 21 Apr 2022 06:05:55 +0000 (06:05 +0000)
[Version] 15.0.11
[Issue Type] Svace

Change-Id: I224d3ac72c27a1b184baf72933bbe5618a073d45

packaging/pulseaudio-modules-tizen.spec
src/module-sound-player.c

index 2611033..9122970 100644 (file)
@@ -2,7 +2,7 @@
 
 Name:             pulseaudio-modules-tizen
 Summary:          Pulseaudio modules for Tizen
-Version:          15.0.10
+Version:          15.0.11
 Release:          0
 Group:            Multimedia/Audio
 License:          LGPL-2.1+
index 16212ae..ce505a8 100644 (file)
@@ -711,12 +711,12 @@ static void deinit_ipc(struct userdata *u) {
 #endif
 }
 
-static void io_event_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event_flags_t events, void*userdata) {
+static void io_event_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io_event_flags_t events, void *userdata) {
     struct userdata *u = userdata;
     struct ipc_data data;
-    int ret = 0;
-    int data_size = 0;
-    int read_sum = 0;
+    ssize_t ret = 0;
+    size_t data_size = 0;
+    size_t read_sum = 0;
     int retry_count = 0;
 
     pa_assert(io);
@@ -728,15 +728,18 @@ static void io_event_callback(pa_mainloop_api *io, pa_io_event *e, int fd, pa_io
     }
 
     if (events & PA_IO_EVENT_INPUT) {
-        data_size = sizeof(data);
+        data_size = sizeof(struct ipc_data);
         memset(&data, 0, data_size);
+
         while (read_sum != data_size && retry_count < RETRY_NUM) {
-            ret = read(fd, (void*)(((char *)&data)+read_sum), data_size-read_sum);
-            if (ret < 0 && errno == EAGAIN)
+            ret = read(fd, (void *)(((char *)&data) + read_sum), data_size - read_sum);
+            if (ret < 0) {
                 retry_count++;
-            else
-                read_sum += ret;
+                continue;
+            }
+            read_sum += (size_t)ret;
         }
+
         if (read_sum == data_size) {
             pa_log_info("name(%s), role(%s), volume_gain_type(%s), method(%s)",
                     data.filename, data.role, data.volume_gain_type, data.method);