summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorCai Yuanqing <Yuanqing.Cai@tieto.com>2010-12-21 13:59:06 +0800
committerColin Guthrie <cguthrie@mandriva.org>2010-12-22 15:08:19 +0000
commitd28fc0df8997fed0da9ac3f54138f792dc660841 (patch)
treede682f987d5687bb48fd677b75f656805b3f1227 /src
parentfb05059acf687405c9a545480b680f1bcc1a229c (diff)
coreaudio: Make coreaudio-detect safer by adding asserts before dereferencing
Diffstat (limited to 'src')
-rw-r--r--src/modules/coreaudio/module-coreaudio-detect.c17
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;