diff options
author | paulhsia <paulhsia@chromium.org> | 2021-02-04 10:46:22 +0800 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-02-04 12:33:56 +0000 |
commit | a59e8950467542956e1a52eeb023ac16c9e147f7 (patch) | |
tree | 5a6a25c49c269d33b13c2ecb2c98a7f58cf70dab | |
parent | eb926695ecca216dd716484593b636c149fb9645 (diff) | |
download | adhd-a59e8950467542956e1a52eeb023ac16c9e147f7.tar.gz |
rstream: validate client type from client
Checks if the client type from clients is valid to prevent invalid
buffer access.
BUG=1159255
BUG=b:175764776
TEST=FEATURES=test USE=asan emerge-$BOARD -j adhd
TEST=oss-fuzz
Change-Id: I56e367b2f6b99da2fa4b2725a67772fff625aba2
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/third_party/adhd/+/2674499
Commit-Queue: Chih-Yang Hsia <paulhsia@chromium.org>
Commit-Queue: Yu-Hsuan Hsu <yuhsuan@chromium.org>
Tested-by: Chih-Yang Hsia <paulhsia@chromium.org>
Reviewed-by: Yu-Hsuan Hsu <yuhsuan@chromium.org>
Auto-Submit: Chih-Yang Hsia <paulhsia@chromium.org>
-rw-r--r-- | cras/src/server/cras_rstream.c | 5 | ||||
-rw-r--r-- | cras/src/tests/rstream_unittest.cc | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/cras/src/server/cras_rstream.c b/cras/src/server/cras_rstream.c index 94adcead..5ff33a5b 100644 --- a/cras/src/server/cras_rstream.c +++ b/cras/src/server/cras_rstream.c @@ -167,6 +167,11 @@ static int verify_rstream_parameters(const struct cras_rstream_config *config, syslog(LOG_ERR, "rstream: Invalid stream type.\n"); return -EINVAL; } + if (config->client_type < CRAS_CLIENT_TYPE_UNKNOWN || + config->client_type >= CRAS_NUM_CLIENT_TYPE) { + syslog(LOG_ERR, "rstream: Invalid client type.\n"); + return -EINVAL; + } if ((config->client_shm_size > 0 && config->client_shm_fd < 0) || (config->client_shm_size == 0 && config->client_shm_fd >= 0)) { syslog(LOG_ERR, "rstream: invalid client-provided shm info\n"); diff --git a/cras/src/tests/rstream_unittest.cc b/cras/src/tests/rstream_unittest.cc index 593c805d..d8dae24c 100644 --- a/cras/src/tests/rstream_unittest.cc +++ b/cras/src/tests/rstream_unittest.cc @@ -32,6 +32,7 @@ class RstreamTestSuite : public testing::Test { config_.stream_id = 555; config_.stream_type = CRAS_STREAM_TYPE_DEFAULT; + config_.client_type = CRAS_CLIENT_TYPE_UNKNOWN; config_.direction = CRAS_STREAM_OUTPUT; config_.dev_idx = NO_DEVICE; config_.flags = 0; |