improved error checking and some fixes
[oweals/openssl.git] / crypto / dso / dso_win32.c
index 1dcafc6eab44c1d3d7580274af3a2e50dab0b08a..f019376b0f8bc7232bb7f281473d3859abe5c5cc 100644 (file)
@@ -68,6 +68,25 @@ DSO_METHOD *DSO_METHOD_win32(void)
        }
 #else
 
+#ifdef _WIN32_WCE
+# if _WIN32_WCE < 300
+static FARPROC GetProcAddressA(HMODULE hModule,LPCSTR lpProcName)
+       {
+       WCHAR lpProcNameW[64];
+       int i;
+
+       for (i=0;lpProcName[i] && i<64;i++)
+               lpProcNameW[i] = (WCHAR)lpProcName[i];
+       if (i==64) return NULL;
+       lpProcNameW[i] = 0;
+
+       return GetProcAddressW(hModule,lpProcNameW);
+       }
+# endif
+# undef GetProcAddress
+# define GetProcAddress GetProcAddressA
+#endif
+
 /* Part of the hack in "win32_load" ... */
 #define DSO_MAX_TRANSLATED_SIZE 256
 
@@ -127,7 +146,7 @@ static int win32_load(DSO *dso)
                DSOerr(DSO_F_WIN32_LOAD,DSO_R_NO_FILENAME);
                goto err;
                }
-       h = LoadLibrary(filename);
+       h = LoadLibraryA(filename);
        if(h == NULL)
                {
                DSOerr(DSO_F_WIN32_LOAD,DSO_R_LOAD_FAILED);
@@ -271,7 +290,7 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
 
        if (!filename)
                {
-               DSOerr(DSO_F_WIN32_MERGER,DSO_R_NO_FILENAME);
+               DSOerr(DSO_F_WIN32_SPLITTER,DSO_R_NO_FILENAME);
                /*goto err;*/
                return(NULL);
                }
@@ -279,7 +298,7 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
        result = OPENSSL_malloc(sizeof(struct file_st));
        if(result == NULL)
                {
-               DSOerr(DSO_F_WIN32_MERGER,
+               DSOerr(DSO_F_WIN32_SPLITTER,
                        ERR_R_MALLOC_FAILURE);
                return(NULL);
                }
@@ -303,7 +322,7 @@ static struct file_st *win32_splitter(DSO *dso, const char *filename,
                case ':':
                        if(position != IN_DEVICE)
                                {
-                               DSOerr(DSO_F_WIN32_MERGER,
+                               DSOerr(DSO_F_WIN32_SPLITTER,
                                        DSO_R_INCORRECT_FILE_SYNTAX);
                                /*goto err;*/
                                return(NULL);
@@ -373,7 +392,7 @@ static char *win32_joiner(DSO *dso, const struct file_st *file_split)
 
        if(!file_split)
                {
-               DSOerr(DSO_F_WIN32_MERGER,
+               DSOerr(DSO_F_WIN32_JOINER,
                                ERR_R_PASSED_NULL_PARAMETER);
                return(NULL);
                }
@@ -401,14 +420,14 @@ static char *win32_joiner(DSO *dso, const struct file_st *file_split)
 
        if(!len)
                {
-               DSOerr(DSO_F_WIN32_MERGER, DSO_R_EMPTY_FILE_STRUCTURE);
+               DSOerr(DSO_F_WIN32_JOINER, DSO_R_EMPTY_FILE_STRUCTURE);
                return(NULL);
                }
 
        result = OPENSSL_malloc(len + 1);
        if (!result)
                {
-               DSOerr(DSO_F_WIN32_MERGER,
+               DSOerr(DSO_F_WIN32_JOINER,
                        ERR_R_MALLOC_FAILURE);
                return(NULL);
                }