IAudioPolicyService: Add attribute tags sanitization am: 39fdbd097a

am: f3cb11a0bc

Change-Id: I4334fc550cd5c2660e2e6f128d2cdd7429917a56
gugelfrei
Kevin Rocard 7 years ago committed by android-build-merger
commit 9c036d8c32

@ -928,6 +928,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;
@ -993,6 +994,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();
@ -1368,6 +1370,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);
@ -1418,6 +1421,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

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

Loading…
Cancel
Save