diff options
author | Cai Yuanqing <Yuanqing.Cai@tieto.com> | 2010-12-21 13:59:06 +0800 |
---|---|---|
committer | Colin Guthrie <cguthrie@mandriva.org> | 2010-12-22 15:08:19 +0000 |
commit | d28fc0df8997fed0da9ac3f54138f792dc660841 (patch) | |
tree | de682f987d5687bb48fd677b75f656805b3f1227 /src/modules/coreaudio | |
parent | fb05059acf687405c9a545480b680f1bcc1a229c (diff) |
coreaudio: Make coreaudio-detect safer by adding asserts before dereferencing
Diffstat (limited to 'src/modules/coreaudio')
-rw-r--r-- | src/modules/coreaudio/module-coreaudio-detect.c | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/modules/coreaudio/module-coreaudio-detect.c b/src/modules/coreaudio/module-coreaudio-detect.c index 6172a187..c23079a9 100644 --- a/src/modules/coreaudio/module-coreaudio-detect.c +++ b/src/modules/coreaudio/module-coreaudio-detect.c @@ -62,12 +62,13 @@ static int ca_device_added(struct pa_module *m, AudioObjectID id) { AudioObjectPropertyAddress property_address; OSStatus err; pa_module *mod; - struct userdata *u = m->userdata; + struct userdata *u; struct ca_device *dev; char *args, tmp[64]; UInt32 size; - pa_assert(u); + pa_assert(m); + pa_assert_se(u = m->userdata); /* To prevent generating a black hole that will suck us in, don't create sources/sinks for PulseAudio virtual devices */ @@ -108,9 +109,10 @@ static int ca_update_device_list(struct pa_module *m) { UInt32 i, size, num_devices; AudioDeviceID *device_id; struct ca_device *dev; - struct userdata *u = m->userdata; + struct userdata *u; - pa_assert(u); + pa_assert(m); + pa_assert_se(u = m->userdata); property_address.mSelector = kAudioHardwarePropertyDevices; property_address.mScope = kAudioObjectPropertyScopeGlobal; @@ -202,6 +204,8 @@ int pa__init(pa_module *m) { struct userdata *u = pa_xnew0(struct userdata, 1); AudioObjectPropertyAddress property_address; + pa_assert(m); + m->userdata = u; property_address.mSelector = kAudioHardwarePropertyDevices; @@ -227,11 +231,12 @@ fail: } void pa__done(pa_module *m) { - struct userdata *u = m->userdata; + struct userdata *u; struct ca_device *dev = u->devices; AudioObjectPropertyAddress property_address; - pa_assert(u); + pa_assert(m); + pa_assert_se(u = m->userdata); property_address.mSelector = kAudioHardwarePropertyDevices; property_address.mScope = kAudioObjectPropertyScopeGlobal; |