Merge "eas_mdls: fix OOB read." into klp-dev am: 008d81708e am: c596af8816 am: ade762e1c4 am: 05b80e373b am: 944bffbd15 am: f5d1ed4a9c am: 41cdf3c775 am: 1efd33c341 am: 92a5d3f33b am: 984b949827 am: a9097aae1b am: 67c67f60db am: 7b442b06c7
am: 0a55619575

Change-Id: If1d7b6446712bc49f601da7d872be79ee8e3311d
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..0f8f3a4
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1 @@
+subdirs = ["arm-wt-22k"]
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 6571161..0000000
--- a/Android.mk
+++ /dev/null
@@ -1 +0,0 @@
-include $(all-subdir-makefiles)
diff --git a/arm-wt-22k/Android.bp b/arm-wt-22k/Android.bp
new file mode 100644
index 0000000..5992542
--- /dev/null
+++ b/arm-wt-22k/Android.bp
@@ -0,0 +1,118 @@
+cc_library_shared {
+    name: "libsonivox",
+    srcs: [
+        "lib_src/eas_chorus.c",
+        "lib_src/eas_chorusdata.c",
+        "lib_src/eas_data.c",
+        "lib_src/eas_dlssynth.c",
+        "lib_src/eas_flog.c",
+        "lib_src/eas_ima_tables.c",
+        "lib_src/eas_imaadpcm.c",
+        "lib_src/eas_imelody.c",
+        "lib_src/eas_imelodydata.c",
+        "lib_src/eas_math.c",
+        "lib_src/eas_mdls.c",
+        "lib_src/eas_midi.c",
+        "lib_src/eas_mididata.c",
+        "lib_src/eas_mixbuf.c",
+        "lib_src/eas_mixer.c",
+        "lib_src/eas_ota.c",
+        "lib_src/eas_otadata.c",
+        "lib_src/eas_pan.c",
+        "lib_src/eas_pcm.c",
+        "lib_src/eas_pcmdata.c",
+        "lib_src/eas_public.c",
+        "lib_src/eas_reverb.c",
+        "lib_src/eas_reverbdata.c",
+        "lib_src/eas_rtttl.c",
+        "lib_src/eas_rtttldata.c",
+        "lib_src/eas_smf.c",
+        "lib_src/eas_smfdata.c",
+        "lib_src/eas_voicemgt.c",
+        "lib_src/eas_wtengine.c",
+        "lib_src/eas_wtsynth.c",
+        "lib_src/eas_xmf.c",
+        "lib_src/eas_xmfdata.c",
+        "lib_src/wt_22khz.c",
+        "lib_src/jet.c",
+        "host_src/eas_config.c",
+        "host_src/eas_hostmm.c",
+        "host_src/eas_report.c",
+
+        // not using these modules
+        //"host_src/eas_main.c",
+        //"host_src/eas_wave.c",
+        //"lib_src/eas_wavefile.c",
+        //"lib_src/eas_wavefiledata.c",
+    ],
+
+    cflags: [
+        "-O2",
+        "-DUNIFIED_DEBUG_MESSAGES",
+        "-DEAS_WT_SYNTH",
+        "-D_IMELODY_PARSER",
+        "-D_RTTTL_PARSER",
+        "-D_OTA_PARSER",
+        "-D_XMF_PARSER",
+        "-DNUM_OUTPUT_CHANNELS=2",
+        "-D_SAMPLE_RATE_22050",
+        "-DMAX_SYNTH_VOICES=64",
+        "-D_8_BIT_SAMPLES",
+        "-D_FILTER_ENABLED",
+        "-DDLS_SYNTHESIZER",
+        "-D_REVERB_ENABLED",
+
+        "-Wno-unused-parameter",
+        "-Werror",
+
+        // not using these options
+        // "-D_WAVE_PARSER",
+        // "-D_IMA_DECODER", // (needed for IMA-ADPCM wave files)
+        // "-D_CHORUS_ENABLED",
+    ],
+
+    local_include_dirs: [
+        "host_src",
+        "lib_src",
+    ],
+    export_include_dirs: ["include"],
+
+    shared_libs: [
+        "liblog",
+    ],
+
+    arch: {
+        arm: {
+            instruction_set: "arm",
+
+            srcs: [
+                "lib_src/ARM-E_filter_gnu.s",
+                "lib_src/ARM-E_interpolate_loop_gnu.s",
+                "lib_src/ARM-E_interpolate_noloop_gnu.s",
+                "lib_src/ARM-E_mastergain_gnu.s",
+                "lib_src/ARM-E_voice_gain_gnu.s",
+            ],
+
+            asflags: [
+                // In order to use #include instead of .include
+                "-xassembler-with-cpp",
+
+                "-Wa,--defsym,SAMPLE_RATE_22050=1",
+                "-Wa,--defsym,STEREO_OUTPUT=1",
+                "-Wa,--defsym,FILTER_ENABLED=1",
+                "-Wa,--defsym,SAMPLES_8_BIT=1",
+            ],
+
+            cflags: [
+                "-DNATIVE_EAS_KERNEL",
+            ],
+
+            // .s files not ported for Clang assembler yet.
+            clang_asflags: ["-no-integrated-as"],
+        },
+        arm64: {
+            // .s files not ported for Clang assembler yet.
+            clang_asflags: ["-no-integrated-as"],
+        },
+    },
+}
diff --git a/arm-wt-22k/Android.mk b/arm-wt-22k/Android.mk
deleted file mode 100644
index b9ea9fd..0000000
--- a/arm-wt-22k/Android.mk
+++ /dev/null
@@ -1,106 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES = \
-	lib_src/eas_chorus.c \
-	lib_src/eas_chorusdata.c \
-	lib_src/eas_data.c \
-	lib_src/eas_dlssynth.c \
-	lib_src/eas_flog.c \
-	lib_src/eas_ima_tables.c \
-	lib_src/eas_imaadpcm.c \
-	lib_src/eas_imelody.c \
-	lib_src/eas_imelodydata.c \
-	lib_src/eas_math.c \
-	lib_src/eas_mdls.c \
-	lib_src/eas_midi.c \
-	lib_src/eas_mididata.c \
-	lib_src/eas_mixbuf.c \
-	lib_src/eas_mixer.c \
-	lib_src/eas_ota.c \
-	lib_src/eas_otadata.c \
-	lib_src/eas_pan.c \
-	lib_src/eas_pcm.c \
-	lib_src/eas_pcmdata.c \
-	lib_src/eas_public.c \
-	lib_src/eas_reverb.c \
-	lib_src/eas_reverbdata.c \
-	lib_src/eas_rtttl.c \
-	lib_src/eas_rtttldata.c \
-	lib_src/eas_smf.c \
-	lib_src/eas_smfdata.c \
-	lib_src/eas_voicemgt.c \
-	lib_src/eas_wtengine.c \
-	lib_src/eas_wtsynth.c \
-	lib_src/eas_xmf.c \
-	lib_src/eas_xmfdata.c \
-	lib_src/wt_22khz.c \
-	lib_src/jet.c \
-	host_src/eas_config.c \
-	host_src/eas_hostmm.c \
-	host_src/eas_report.c
-
-# not using these modules
-#	host_src/eas_main.c \
-#	host_src/eas_wave.c \
-#	lib_src/eas_wavefile.c \
-#	lib_src/eas_wavefiledata.c \
-
-LOCAL_CFLAGS+= -O2 -D UNIFIED_DEBUG_MESSAGES -D EAS_WT_SYNTH \
-	-D _IMELODY_PARSER -D _RTTTL_PARSER -D _OTA_PARSER \
-	-D _XMF_PARSER -D NUM_OUTPUT_CHANNELS=2 \
-	-D _SAMPLE_RATE_22050 -D MAX_SYNTH_VOICES=64 \
-	-D _8_BIT_SAMPLES -D _FILTER_ENABLED \
-	-D DLS_SYNTHESIZER \
-	-D _REVERB_ENABLED \
-	-Wno-unused-parameter \
-
-# not using these options
-# -D _WAVE_PARSER
-# -D _IMA_DECODER (needed for IMA-ADPCM wave files)
-# -D _CHORUS_ENABLED
-
-LOCAL_C_INCLUDES:= \
-	$(LOCAL_PATH)/host_src \
-	$(LOCAL_PATH)/lib_src
-
-LOCAL_ARM_MODE := arm
-
-LOCAL_MODULE := libsonivox
-
-LOCAL_COPY_HEADERS_TO := libsonivox
-LOCAL_COPY_HEADERS := \
-	host_src/eas.h \
-	host_src/eas_types.h \
-	host_src/eas_reverb.h \
-	host_src/jet.h
-
-LOCAL_SRC_FILES_arm += \
-	lib_src/ARM-E_filter_gnu.s \
-	lib_src/ARM-E_interpolate_loop_gnu.s \
-	lib_src/ARM-E_interpolate_noloop_gnu.s \
-	lib_src/ARM-E_mastergain_gnu.s \
-	lib_src/ARM-E_voice_gain_gnu.s
-
-asm_flags := \
-	-I $(LOCAL_PATH)/lib_src \
-	--defsym SAMPLE_RATE_22050=1 \
-	--defsym STEREO_OUTPUT=1 \
-	--defsym FILTER_ENABLED=1 \
-	--defsym SAMPLES_8_BIT=1
-
-LOCAL_ASFLAGS_arm := \
-	$(foreach f,$(asm_flags),-Wa,"$(f)")
-
-# .s files not ported for Clang assembler yet.
-LOCAL_CLANG_ASFLAGS_arm += -no-integrated-as
-LOCAL_CLANG_ASFLAGS_arm64 += -no-integrated-as
-
-asm_flags :=
-
-LOCAL_CFLAGS_arm += -D NATIVE_EAS_KERNEL
-
-LOCAL_SHARED_LIBRARIES := \
-	libutils libcutils
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/arm-wt-22k/include/libsonivox/eas.h b/arm-wt-22k/include/libsonivox/eas.h
new file mode 120000
index 0000000..c2c44c8
--- /dev/null
+++ b/arm-wt-22k/include/libsonivox/eas.h
@@ -0,0 +1 @@
+../../host_src/eas.h
\ No newline at end of file
diff --git a/arm-wt-22k/include/libsonivox/eas_reverb.h b/arm-wt-22k/include/libsonivox/eas_reverb.h
new file mode 120000
index 0000000..1fb4c96
--- /dev/null
+++ b/arm-wt-22k/include/libsonivox/eas_reverb.h
@@ -0,0 +1 @@
+../../host_src/eas_reverb.h
\ No newline at end of file
diff --git a/arm-wt-22k/include/libsonivox/eas_types.h b/arm-wt-22k/include/libsonivox/eas_types.h
new file mode 120000
index 0000000..e1e9a71
--- /dev/null
+++ b/arm-wt-22k/include/libsonivox/eas_types.h
@@ -0,0 +1 @@
+../../host_src/eas_types.h
\ No newline at end of file
diff --git a/arm-wt-22k/include/libsonivox/jet.h b/arm-wt-22k/include/libsonivox/jet.h
new file mode 120000
index 0000000..db31fed
--- /dev/null
+++ b/arm-wt-22k/include/libsonivox/jet.h
@@ -0,0 +1 @@
+../../host_src/jet.h
\ No newline at end of file
diff --git a/arm-wt-22k/lib_src/ARM-E_filter_gnu.s b/arm-wt-22k/lib_src/ARM-E_filter_gnu.s
index 871cd7d..859d9a4 100644
--- a/arm-wt-22k/lib_src/ARM-E_filter_gnu.s
+++ b/arm-wt-22k/lib_src/ARM-E_filter_gnu.s
@@ -24,7 +24,7 @@
 @	PASSED IN: r1

 @****************************************************************

 

-	.include	"ARM_synth_constants_gnu.inc"

+	#include	"ARM_synth_constants_gnu.inc"

 

 	.arm

 	.text

diff --git a/arm-wt-22k/lib_src/ARM-E_interpolate_loop_gnu.s b/arm-wt-22k/lib_src/ARM-E_interpolate_loop_gnu.s
index 847a7f0..2529e93 100644
--- a/arm-wt-22k/lib_src/ARM-E_interpolate_loop_gnu.s
+++ b/arm-wt-22k/lib_src/ARM-E_interpolate_loop_gnu.s
@@ -25,7 +25,7 @@
 @	PASSED IN: r1

 @****************************************************************

 

-	.include	"ARM_synth_constants_gnu.inc"

+	#include	"ARM_synth_constants_gnu.inc"

 

 	.arm

 	.text

diff --git a/arm-wt-22k/lib_src/ARM-E_interpolate_noloop_gnu.s b/arm-wt-22k/lib_src/ARM-E_interpolate_noloop_gnu.s
index 6343762..55a0ba7 100644
--- a/arm-wt-22k/lib_src/ARM-E_interpolate_noloop_gnu.s
+++ b/arm-wt-22k/lib_src/ARM-E_interpolate_noloop_gnu.s
@@ -25,7 +25,7 @@
 @	PASSED IN: r1

 @****************************************************************

 

-	.include	"ARM_synth_constants_gnu.inc"

+	#include	"ARM_synth_constants_gnu.inc"

 

 	.arm

 	.text

diff --git a/arm-wt-22k/lib_src/ARM-E_mastergain_gnu.s b/arm-wt-22k/lib_src/ARM-E_mastergain_gnu.s
index b4e905b..f443fbb 100644
--- a/arm-wt-22k/lib_src/ARM-E_mastergain_gnu.s
+++ b/arm-wt-22k/lib_src/ARM-E_mastergain_gnu.s
@@ -35,7 +35,7 @@
 @

 @****************************************************************

 

-	.include	"ARM_synth_constants_gnu.inc"

+	#include	"ARM_synth_constants_gnu.inc"

 

 	.arm

 	.text

diff --git a/arm-wt-22k/lib_src/ARM-E_voice_gain_gnu.s b/arm-wt-22k/lib_src/ARM-E_voice_gain_gnu.s
index 4517a3d..6ca28b2 100644
--- a/arm-wt-22k/lib_src/ARM-E_voice_gain_gnu.s
+++ b/arm-wt-22k/lib_src/ARM-E_voice_gain_gnu.s
@@ -28,7 +28,7 @@
 

 

 

-	.include	"ARM_synth_constants_gnu.inc"

+	#include	"ARM_synth_constants_gnu.inc"

 

 	.arm

 	.text

diff --git a/arm-wt-22k/lib_src/eas_mdls.c b/arm-wt-22k/lib_src/eas_mdls.c
index 296d783..688de6e 100644
--- a/arm-wt-22k/lib_src/eas_mdls.c
+++ b/arm-wt-22k/lib_src/eas_mdls.c
@@ -324,6 +324,7 @@
 
 static const S_DLS_ART_VALUES defaultArt =
 {
+    {
     0,              /* not modified */
     -851,           /* Mod LFO frequency: 5 Hz */
     -7973,          /* Mod LFO delay: 10 milliseconds */
@@ -381,6 +382,7 @@
     1000,           /* Default CC91 to reverb send: 100.0% */
     0,              /* Default chorus send: 0.0% */
     1000            /* Default CC93 to chorus send: 100.0% */
+    }
 };
 
 /*------------------------------------
@@ -567,7 +569,7 @@
     }
 
     /* must have a ptbl chunk */
-    if ((ptblSize == 0) || (ptblSize > DLS_MAX_WAVE_COUNT * sizeof(POOLCUE) + sizeof(POOLTABLE)))
+    if ((ptblSize == 0) || (ptblSize > (EAS_I32) (DLS_MAX_WAVE_COUNT * sizeof(POOLCUE) + sizeof(POOLTABLE))))
     {
         { /* dpp: EAS_ReportEx(_EAS_SEVERITY_ERROR, "No ptbl chunk found"); */ }
         return EAS_ERROR_UNRECOGNIZED_FORMAT;
diff --git a/arm-wt-22k/lib_src/eas_pan.h b/arm-wt-22k/lib_src/eas_pan.h
index cb0a90d..7b3cba5 100644
--- a/arm-wt-22k/lib_src/eas_pan.h
+++ b/arm-wt-22k/lib_src/eas_pan.h
@@ -31,7 +31,7 @@
  *----------------------------------------------------------------------------
 */
 
-#ifndef EAS_PAN_H
+#ifndef _EAS_PAN_H
 #define _EAS_PAN_H
 
 #include "eas_types.h"
@@ -62,5 +62,5 @@
 */
 void EAS_CalcPanControl (EAS_INT pan, EAS_I16 *pGainLeft, EAS_I16 *pGainRight);
 
-#endif
+#endif /* #ifndef _EAS_PAN_H */