From b96e457fed81b11fac217c900576286e6d0ac481 Mon Sep 17 00:00:00 2001 From: Seungbae Shin Date: Thu, 21 Apr 2022 16:37:23 +0900 Subject: [PATCH] audio_io_test: Fix INTEGER_OVERFLOW defect [Version] 0.5.49 [Issue Type] Svace Change-Id: I69a00dd9aa6d3151bd3a0a3f125ab5d69d254d6d --- packaging/capi-media-audio-io.spec | 2 +- test/audio_io_test.c | 30 +++++++++++++++++++++--------- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/packaging/capi-media-audio-io.spec b/packaging/capi-media-audio-io.spec index 2887b11..4381a96 100644 --- a/packaging/capi-media-audio-io.spec +++ b/packaging/capi-media-audio-io.spec @@ -1,6 +1,6 @@ Name: capi-media-audio-io Summary: An Audio Input & Audio Output library in Tizen Native API -Version: 0.5.48 +Version: 0.5.49 Release: 0 Group: Multimedia/API License: Apache-2.0 diff --git a/test/audio_io_test.c b/test/audio_io_test.c index efb54c4..3b77d22 100644 --- a/test/audio_io_test.c +++ b/test/audio_io_test.c @@ -181,8 +181,8 @@ static void _play_file_sample_async(char *file, int frequency, int ch, int type) static void _play_file_sample_sync(char *file, int frequency, int ch, int type) { audio_out_h output; - int file_size = 0; - int read_bytes = 0; + long file_size = 0; + size_t read_bytes = 0; int buffer_size = 0; char *buf = NULL; FILE *fp = NULL; @@ -201,14 +201,14 @@ static void _play_file_sample_sync(char *file, int frequency, int ch, int type) file_size = ftell(fp); fseek(fp, 0, SEEK_SET); - printf("Play [%s] of size [%d] with [%d][%d][%d]\n", file, file_size, frequency, ch, type); + printf("Play [%s] of size [%ld] with [%d][%d][%d]\n", file, file_size, frequency, ch, type); audio_out_create_new(frequency, ch_table[ch], AUDIO_SAMPLE_TYPE_U8 + type, &output); audio_out_set_state_changed_cb(output, _audio_out_state_cb, NULL); audio_out_prepare(output); audio_out_get_buffer_size(output, &buffer_size); - buf = (char *)malloc(buffer_size); + buf = (char *)calloc(buffer_size, sizeof(char)); if (buf == NULL) { printf("malloc failed\n"); goto EXIT; @@ -220,20 +220,32 @@ static void _play_file_sample_sync(char *file, int frequency, int ch, int type) while (file_size > 0) { read_bytes = fread(buf, 1, buffer_size, fp); + printf("."); - i++; - if (i % 10 == 0) + if (++i % 10 == 0) printf("|"); if (i % 100 == 0) { printf("\n"); i = 0; } - audio_out_write(output, buf, read_bytes); - file_size = file_size - read_bytes; + + if (read_bytes != buffer_size) { + if (feof(fp)) { + printf("\n EOS! this is a last buffer! \n"); + } else if (ferror(fp)) { + printf("\n Error!\n"); + break; + } + } + + audio_out_write(output, buf, (unsigned int)read_bytes); + + file_size -= (long)read_bytes; usleep(10000); } EXIT: + printf("\n Cleanup now!\n"); audio_out_unprepare(output); audio_out_destroy(output); @@ -242,7 +254,7 @@ EXIT: if (fp) fclose(fp); - printf("\nEOS!!!! Play done\n"); + printf("Play done\n"); } static sound_device_h *find_device_by_id(int id) -- 2.7.4