mirror of
https://github.com/openharmony/third_party_tinyalsa.git
synced 2026-07-19 15:24:22 -04:00
Merge pull request #77 from bzhg/master
mixer: check for overflow and NULL return
This commit is contained in:
@@ -28,6 +28,7 @@
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
@@ -366,7 +367,11 @@ int mixer_ctl_get_array(struct mixer_ctl *ctl, void *array, size_t count)
|
||||
struct snd_ctl_tlv *tlv;
|
||||
int ret;
|
||||
|
||||
if (count > SIZE_MAX - sizeof(*tlv))
|
||||
return -EINVAL;
|
||||
tlv = calloc(1, sizeof(*tlv) + count);
|
||||
if (!tlv)
|
||||
return -ENOMEM;
|
||||
tlv->numid = ctl->info.id.numid;
|
||||
tlv->length = count;
|
||||
ret = ioctl(ctl->mixer->fd, SNDRV_CTL_IOCTL_TLV_READ, tlv);
|
||||
@@ -462,7 +467,11 @@ int mixer_ctl_set_array(struct mixer_ctl *ctl, const void *array, size_t count)
|
||||
if (ctl->info.access & SNDRV_CTL_ELEM_ACCESS_TLV_READWRITE) {
|
||||
struct snd_ctl_tlv *tlv;
|
||||
int ret = 0;
|
||||
if (count > SIZE_MAX - sizeof(*tlv))
|
||||
return -EINVAL;
|
||||
tlv = calloc(1, sizeof(*tlv) + count);
|
||||
if (!tlv)
|
||||
return -ENOMEM;
|
||||
tlv->numid = ctl->info.id.numid;
|
||||
tlv->length = count;
|
||||
memcpy(tlv->tlv, array, count);
|
||||
|
||||
Reference in New Issue
Block a user