Merge the 2018-09-05 SPL branch from AOSP-Partner
* security-aosp-nyc-mr2-release:
Change-Id: I9541085ce5310f72cfbbd72352768e891055e877
diff --git a/Android.mk b/Android.mk
index 0c42e13..578baf4 100644
--- a/Android.mk
+++ b/Android.mk
@@ -1,73 +1,100 @@
LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
+
+ifeq ($(TARGET_TINY_ALSA_IGNORE_SILENCE_SIZE),true)
+ LOCAL_CFLAGS += -DIGNORE_SILENCE_SIZE
+endif
+
LOCAL_C_INCLUDES:= external/tinyalsa/include
+LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
LOCAL_SRC_FILES:= mixer.c pcm.c
LOCAL_MODULE := libtinyalsa
LOCAL_SHARED_LIBRARIES:= libcutils libutils
LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS += -Werror
+LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
+
include $(BUILD_SHARED_LIBRARY)
ifeq ($(HOST_OS), linux)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES:= external/tinyalsa/include
+LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
LOCAL_SRC_FILES:= mixer.c pcm.c
LOCAL_MODULE := libtinyalsa
LOCAL_STATIC_LIBRARIES:= libcutils libutils
LOCAL_CFLAGS += -Werror
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
+
include $(BUILD_HOST_STATIC_LIBRARY)
endif
include $(CLEAR_VARS)
LOCAL_C_INCLUDES:= external/tinyalsa/include
+LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
LOCAL_SRC_FILES:= tinyplay.c
LOCAL_MODULE := tinyplay
LOCAL_SHARED_LIBRARIES:= libcutils libutils libtinyalsa
LOCAL_MODULE_TAGS := optional
-LOCAL_CFLAGS += -Werror
+LOCAL_CFLAGS += -Werror -Wno-missing-field-initializers
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
include $(BUILD_EXECUTABLE)
ifeq ($(HOST_OS), linux)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES:= external/tinyalsa/include
+LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
LOCAL_SRC_FILES:= tinyplay.c
LOCAL_MODULE := tinyplay
LOCAL_STATIC_LIBRARIES:= libcutils libutils libtinyalsa
LOCAL_MODULE_TAGS := optional
-LOCAL_CFLAGS += -Werror
+LOCAL_CFLAGS += -Werror -Wno-missing-field-initializers
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
include $(BUILD_HOST_EXECUTABLE)
endif
include $(CLEAR_VARS)
LOCAL_C_INCLUDES:= external/tinyalsa/include
+LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
LOCAL_SRC_FILES:= tinycap.c
LOCAL_MODULE := tinycap
LOCAL_SHARED_LIBRARIES:= libcutils libutils libtinyalsa
LOCAL_MODULE_TAGS := optional
-LOCAL_CFLAGS += -Werror
+LOCAL_CFLAGS += -Werror -Wno-missing-field-initializers
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
include $(BUILD_EXECUTABLE)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES:= external/tinyalsa/include
+LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
LOCAL_SRC_FILES:= tinymix.c
LOCAL_MODULE := tinymix
LOCAL_SHARED_LIBRARIES:= libcutils libutils libtinyalsa
LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS += -Werror
+LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
+
include $(BUILD_EXECUTABLE)
include $(CLEAR_VARS)
LOCAL_C_INCLUDES:= external/tinyalsa/include
+LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include
LOCAL_SRC_FILES:= tinypcminfo.c
LOCAL_MODULE := tinypcminfo
LOCAL_SHARED_LIBRARIES:= libcutils libutils libtinyalsa
LOCAL_MODULE_TAGS := optional
LOCAL_CFLAGS += -Werror
+LOCAL_ADDITIONAL_DEPENDENCIES := $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr
+
include $(BUILD_EXECUTABLE)
diff --git a/include/tinyalsa/asoundlib.h b/include/tinyalsa/asoundlib.h
index 97ee4f3..b789573 100644
--- a/include/tinyalsa/asoundlib.h
+++ b/include/tinyalsa/asoundlib.h
@@ -106,7 +106,9 @@
unsigned int start_threshold;
unsigned int stop_threshold;
unsigned int silence_threshold;
+#ifndef IGNORE_SILENCE_SIZE
unsigned int silence_size;
+#endif
/* Minimum number of frames available before pcm_mmap_write() will actually
* write into the kernel buffer. Only used if the stream is opened in mmap mode
diff --git a/mixer.c b/mixer.c
index c4e6765..a02c790 100644
--- a/mixer.c
+++ b/mixer.c
@@ -418,11 +418,18 @@
ev.value.integer.value[id] = !!value;
break;
- case SNDRV_CTL_ELEM_TYPE_INTEGER:
+ case SNDRV_CTL_ELEM_TYPE_INTEGER: {
+ int min = mixer_ctl_get_range_min(ctl);
+ int max = mixer_ctl_get_range_max(ctl);
+ if (min < max && (value < min || value > max))
+ return -EINVAL;
ev.value.integer.value[id] = value;
break;
+ }
case SNDRV_CTL_ELEM_TYPE_ENUMERATED:
+ if (value < 0 || (value >= 0 && (unsigned int)value >= mixer_ctl_get_num_enums(ctl)))
+ return -EINVAL;
ev.value.enumerated.item[id] = value;
break;
diff --git a/pcm.c b/pcm.c
index 78e1cea..612d068 100644
--- a/pcm.c
+++ b/pcm.c
@@ -959,7 +959,11 @@
sparams.xfer_align = config->period_size / 2; /* needed for old kernels */
sparams.silence_threshold = config->silence_threshold;
+#ifdef IGNORE_SILENCE_SIZE
+ sparams.silence_size = 0;
+#else
sparams.silence_size = config->silence_size;
+#endif
pcm->boundary = sparams.boundary = pcm->buffer_size;
while (pcm->boundary * 2 <= INT_MAX - pcm->buffer_size)
diff --git a/tinycap.c b/tinycap.c
index 3e709b2..951f1e7 100644
--- a/tinycap.c
+++ b/tinycap.c
@@ -185,7 +185,7 @@
enum pcm_format format, unsigned int period_size,
unsigned int period_count)
{
- struct pcm_config config;
+ struct pcm_config config = {0};
struct pcm *pcm;
char *buffer;
unsigned int size;
diff --git a/tinyplay.c b/tinyplay.c
index 88c54ae..7422554 100644
--- a/tinyplay.c
+++ b/tinyplay.c
@@ -212,7 +212,7 @@
unsigned int rate, unsigned int bits, unsigned int period_size,
unsigned int period_count)
{
- struct pcm_config config;
+ struct pcm_config config = {0};
struct pcm *pcm;
char *buffer;
int size;