aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2012-11-07 20:38:27 +0000
committerWerner Koch <[email protected]>2012-11-07 20:38:27 +0000
commitc3a5448379cdf07b408a265fe8f477901524170d (patch)
tree667fdbc8a2c83ad85a19e8f063b889c79972f51a
parentImprove handling of random_seed read errors. (diff)
downloadgnupg-c3a5448379cdf07b408a265fe8f477901524170d.tar.gz
gnupg-c3a5448379cdf07b408a265fe8f477901524170d.zip
Fix usage of dlerror to conform to POSIX.
* cipher/idea-stub.c: Clear last error before dlsym. -- This is required for NetBSD. Reported-by: Thomas Klausner
-rw-r--r--cipher/idea-stub.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/cipher/idea-stub.c b/cipher/idea-stub.c
index 8996c7596..abfb929e7 100644
--- a/cipher/idea-stub.c
+++ b/cipher/idea-stub.c
@@ -25,9 +25,9 @@
problem with this, please see http://www.noepatents.org.
However for research purposes and in certain situations it might be
- useful to use this algorithm anyway.
+ useful to use this algorithm anyway.
- We provide this stub which will dynload a idea module and is only
+ We provide this stub which will dynload a idea module and is only
used if the configure run did't found statically linked file.
See http://www.gnupg.org/why-not-dea.html for details.
*/
@@ -55,12 +55,12 @@
#define USE_DYNAMIC_LINKING 1
static int last_error = 0;
-
+
void*
dlopen (const char *pathname, int mode)
{
void *h = LoadLibrary (pathname);
- if (!h)
+ if (!h)
{
log_error ("LoadLibrary failed: %s\n", w32_strerror (errno));
last_error = 1;
@@ -130,14 +130,16 @@ load_module (const char *name)
goto failure;
}
+ dlerror (); /* Clear old errors or initialize dlerror. */
+
sym = dlsym (handle, "idea_get_info");
if (dlerror ())
sym = dlsym (handle, "_idea_get_info");
- if ((err=dlerror()))
+ if ((err=dlerror()))
goto failure;
return (INFO_FNC)sym;
-
+
failure:
log_info ("invalid module `%s': %s\n", name?name:"???", err?err:"???");
if (handle)