IAudioPolicyService: Add attribute tags sanitization

am: 39fdbd097a

Change-Id: I2bccade7b7164dd3b912a1f891c4bf077120812a
gugelfrei
Kevin Rocard 7 years ago committed by android-build-merger
commit f3cb11a0bc

@ -960,6 +960,7 @@ status_t BnAudioPolicyService::onTransact(
bool hasAttributes = data.readInt32() != 0;
if (hasAttributes) {
data.read(&attr, sizeof(audio_attributes_t));
sanetizeAudioAttributes(&attr);
}
audio_session_t session = (audio_session_t)data.readInt32();
audio_stream_type_t stream = AUDIO_STREAM_DEFAULT;
@ -1025,6 +1026,7 @@ status_t BnAudioPolicyService::onTransact(
CHECK_INTERFACE(IAudioPolicyService, data, reply);
audio_attributes_t attr;
data.read(&attr, sizeof(audio_attributes_t));
sanetizeAudioAttributes(&attr);
audio_io_handle_t input = (audio_io_handle_t)data.readInt32();
audio_session_t session = (audio_session_t)data.readInt32();
pid_t pid = (pid_t)data.readInt32();
@ -1400,6 +1402,7 @@ status_t BnAudioPolicyService::onTransact(
data.read(&source, sizeof(struct audio_port_config));
audio_attributes_t attributes;
data.read(&attributes, sizeof(audio_attributes_t));
sanetizeAudioAttributes(&attributes);
audio_patch_handle_t handle = AUDIO_PATCH_HANDLE_NONE;
status_t status = startAudioSource(&source, &attributes, &handle);
reply->writeInt32(status);
@ -1450,6 +1453,15 @@ status_t BnAudioPolicyService::onTransact(
}
}
void BnAudioPolicyService::sanetizeAudioAttributes(audio_attributes_t* attr)
{
const size_t tagsMaxSize = AUDIO_ATTRIBUTES_TAGS_MAX_SIZE;
if (strnlen(attr->tags, tagsMaxSize) >= tagsMaxSize) {
android_errorWriteLog(0x534e4554, "68953950"); // SafetyNet logging
}
attr->tags[tagsMaxSize - 1] = '\0';
}
// ----------------------------------------------------------------------------
} // namespace android

@ -183,6 +183,8 @@ public:
const Parcel& data,
Parcel* reply,
uint32_t flags = 0);
private:
void sanetizeAudioAttributes(audio_attributes_t* attr);
};
// ----------------------------------------------------------------------------

Loading…
Cancel
Save