summaryrefslogtreecommitdiff
path: root/src/hwdep
diff options
context:
space:
mode:
authorJaroslav Kysela <perex@perex.cz>2001-08-15 12:12:16 +0000
committerJaroslav Kysela <perex@perex.cz>2001-08-15 12:12:16 +0000
commitb45c08611c0bab46c2e2d2b071bf7331c0ba0c62 (patch)
tree82417d8307c17c92119465f911bfa4f611548e7f /src/hwdep
parent36a28100813aa02da47fa20e038abedf8193b85f (diff)
downloadalsa-lib-b45c08611c0bab46c2e2d2b071bf7331c0ba0c62.tar.gz
Added symbol versioning for dlsym-callbacks.
Removed snd_config_refer_load from confmisc.c and pcm.c.
Diffstat (limited to 'src/hwdep')
-rw-r--r--src/hwdep/hwdep.c10
-rw-r--r--src/hwdep/hwdep_hw.c1
2 files changed, 8 insertions, 3 deletions
diff --git a/src/hwdep/hwdep.c b/src/hwdep/hwdep.c
index c3621e05..ac76f469 100644
--- a/src/hwdep/hwdep.c
+++ b/src/hwdep/hwdep.c
@@ -102,10 +102,14 @@ static int snd_hwdep_open_conf(snd_hwdep_t **hwdep,
open_name = buf;
snprintf(buf, sizeof(buf), "_snd_hwdep_%s_open", str);
}
- if (!lib)
- lib = ALSA_LIB;
h = dlopen(lib, RTLD_NOW);
- open_func = h ? dlsym(h, open_name) : NULL;
+ if (h) {
+ if ((err = snd_dlsym_verify(h, open_name, SND_DLSYM_VERSION(SND_HWDEP_DLSYM_VERSION))) < 0) {
+ dlclose(h);
+ goto _err;
+ }
+ open_func = dlsym(h, open_name);
+ }
if (!h) {
SNDERR("Cannot open shared library %s", lib);
err = -ENOENT;
diff --git a/src/hwdep/hwdep_hw.c b/src/hwdep/hwdep_hw.c
index fbbfa7dc..2a436171 100644
--- a/src/hwdep/hwdep_hw.c
+++ b/src/hwdep/hwdep_hw.c
@@ -137,6 +137,7 @@ int snd_hwdep_hw_open(snd_hwdep_t **handle, const char *name, int card, int devi
return 0;
}
+SND_DLSYM_BUILD_VERSION(_snd_hwdep_hw_open, SND_HWDEP_DLSYM_VERSION);
int _snd_hwdep_hw_open(snd_hwdep_t **hwdep, char *name,
snd_config_t *root ATTRIBUTE_UNUSED,
snd_config_t *conf, int mode)