diff options
author | Jaroslav Kysela <perex@perex.cz> | 2001-08-15 12:12:16 +0000 |
---|---|---|
committer | Jaroslav Kysela <perex@perex.cz> | 2001-08-15 12:12:16 +0000 |
commit | b45c08611c0bab46c2e2d2b071bf7331c0ba0c62 (patch) | |
tree | 82417d8307c17c92119465f911bfa4f611548e7f /src/hwdep | |
parent | 36a28100813aa02da47fa20e038abedf8193b85f (diff) | |
download | alsa-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.c | 10 | ||||
-rw-r--r-- | src/hwdep/hwdep_hw.c | 1 |
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) |