summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authortedu <>2014-04-16 19:42:24 +0000
committertedu <>2014-04-16 19:42:24 +0000
commit5fb0ca0ddf59f49b49200128095fb2d4a1577020 (patch)
tree83bea3615bf607b22ec4199424903c29c83f04d4 /src/lib
parent980353a54aa762841b1a8478c04a6c39759520b3 (diff)
downloadopenbsd-5fb0ca0ddf59f49b49200128095fb2d4a1577020.tar.gz
openbsd-5fb0ca0ddf59f49b49200128095fb2d4a1577020.tar.bz2
openbsd-5fb0ca0ddf59f49b49200128095fb2d4a1577020.zip
> As I walk through the valley of the shadow of death
> I take a look at my life and realize there's nothin' left > Cause I've been blasting and laughing so long, > That even my mama thinks that my mind is gone Remove even more unspeakable evil being perpetuated in the name of VMS. (and lesser evils done in the name of others.) ok miod
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libcrypto/bio/b_sock.c269
-rw-r--r--src/lib/libcrypto/bio/bio.h9
-rw-r--r--src/lib/libcrypto/bio/bio_cb.c2
-rw-r--r--src/lib/libcrypto/bio/bio_lcl.h9
-rw-r--r--src/lib/libcrypto/bio/bss_acpt.c9
-rw-r--r--src/lib/libcrypto/bio/bss_conn.c10
-rw-r--r--src/lib/libcrypto/bio/bss_dgram.c10
-rw-r--r--src/lib/libcrypto/bio/bss_file.c87
-rw-r--r--src/lib/libcrypto/bio/bss_log.c199
-rw-r--r--src/lib/libcrypto/bio/bss_sock.c6
-rw-r--r--src/lib/libssl/src/crypto/bio/b_sock.c269
-rw-r--r--src/lib/libssl/src/crypto/bio/bio.h9
-rw-r--r--src/lib/libssl/src/crypto/bio/bio_cb.c2
-rw-r--r--src/lib/libssl/src/crypto/bio/bio_lcl.h9
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_acpt.c9
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_conn.c10
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_dgram.c10
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_file.c87
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_log.c199
-rw-r--r--src/lib/libssl/src/crypto/bio/bss_sock.c6
20 files changed, 8 insertions, 1212 deletions
diff --git a/src/lib/libcrypto/bio/b_sock.c b/src/lib/libcrypto/bio/b_sock.c
index cd62f889ab..3ccebf77f4 100644
--- a/src/lib/libcrypto/bio/b_sock.c
+++ b/src/lib/libcrypto/bio/b_sock.c
@@ -184,14 +184,7 @@ BIO_get_port(const char *str, unsigned short *port_ptr)
184 *port_ptr = (unsigned short)i; 184 *port_ptr = (unsigned short)i;
185 else { 185 else {
186 CRYPTO_w_lock(CRYPTO_LOCK_GETSERVBYNAME); 186 CRYPTO_w_lock(CRYPTO_LOCK_GETSERVBYNAME);
187 /* Note: under VMS with SOCKETSHR, it seems like the first
188 * parameter is 'char *', instead of 'const char *'
189 */
190#ifndef CONST_STRICT
191 s = getservbyname((char *)str, "tcp");
192#else
193 s = getservbyname(str, "tcp"); 187 s = getservbyname(str, "tcp");
194#endif
195 if (s != NULL) 188 if (s != NULL)
196 *port_ptr = ntohs((unsigned short)s->s_port); 189 *port_ptr = ntohs((unsigned short)s->s_port);
197 CRYPTO_w_unlock(CRYPTO_LOCK_GETSERVBYNAME); 190 CRYPTO_w_unlock(CRYPTO_LOCK_GETSERVBYNAME);
@@ -247,260 +240,24 @@ BIO_sock_error(int sock)
247 return (j); 240 return (j);
248} 241}
249 242
250#if 0 243struct hostent *
251long 244BIO_gethostbyname(const char *name)
252BIO_ghbn_ctrl(int cmd, int iarg, char *parg)
253{
254 int i;
255 char **p;
256
257 switch (cmd) {
258 case BIO_GHBN_CTRL_HITS:
259 return (BIO_ghbn_hits);
260 /* break; */
261 case BIO_GHBN_CTRL_MISSES:
262 return (BIO_ghbn_miss);
263 /* break; */
264 case BIO_GHBN_CTRL_CACHE_SIZE:
265 return (GHBN_NUM);
266 /* break; */
267 case BIO_GHBN_CTRL_GET_ENTRY:
268 if ((iarg >= 0) && (iarg < GHBN_NUM) &&
269 (ghbn_cache[iarg].order > 0)) {
270 p = (char **)parg;
271 if (p == NULL)
272 return (0);
273 *p = ghbn_cache[iarg].name;
274 ghbn_cache[iarg].name[128] = '\0';
275 return (1);
276 }
277 return (0);
278 /* break; */
279 case BIO_GHBN_CTRL_FLUSH:
280 for (i = 0; i < GHBN_NUM; i++)
281 ghbn_cache[i].order = 0;
282 break;
283 default:
284 return (0);
285 }
286 return (1);
287}
288#endif
289
290#if 0
291static struct hostent
292*ghbn_dup(struct hostent *a)
293{ 245{
294 struct hostent *ret;
295 int i, j;
296
297 MemCheck_off();
298 ret = (struct hostent *)OPENSSL_malloc(sizeof(struct hostent));
299 if (ret == NULL)
300 return (NULL);
301 memset(ret, 0, sizeof(struct hostent));
302
303 for (i = 0; a->h_aliases[i] != NULL; i++)
304 ;
305 i++;
306 ret->h_aliases = (char **)OPENSSL_malloc(i*sizeof(char *));
307 if (ret->h_aliases == NULL)
308 goto err;
309 memset(ret->h_aliases, 0, i*sizeof(char *));
310
311 for (i = 0; a->h_addr_list[i] != NULL; i++)
312 ;
313 i++;
314 ret->h_addr_list = (char **)OPENSSL_malloc(i*sizeof(char *));
315 if (ret->h_addr_list == NULL)
316 goto err;
317 memset(ret->h_addr_list, 0, i*sizeof(char *));
318
319 j = strlen(a->h_name) + 1;
320 if ((ret->h_name = OPENSSL_malloc(j)) == NULL)
321 goto err;
322 memcpy((char *)ret->h_name, a->h_name, j);
323 for (i = 0; a->h_aliases[i] != NULL; i++) {
324 j = strlen(a->h_aliases[i]) + 1;
325 if ((ret->h_aliases[i] = OPENSSL_malloc(j)) == NULL)
326 goto err;
327 memcpy(ret->h_aliases[i], a->h_aliases[i], j);
328 }
329 ret->h_length = a->h_length;
330 ret->h_addrtype = a->h_addrtype;
331 for (i = 0; a->h_addr_list[i] != NULL; i++) {
332 if ((ret->h_addr_list[i] = OPENSSL_malloc(a->h_length)) == NULL)
333 goto err;
334 memcpy(ret->h_addr_list[i], a->h_addr_list[i], a->h_length);
335 }
336 if (0) {
337err:
338 if (ret != NULL)
339 ghbn_free(ret);
340 ret = NULL;
341 }
342 MemCheck_on();
343 return (ret);
344}
345
346static void
347ghbn_free(struct hostent *a)
348{
349 int i;
350
351 if (a == NULL)
352 return;
353
354 if (a->h_aliases != NULL) {
355 for (i = 0; a->h_aliases[i] != NULL; i++)
356 OPENSSL_free(a->h_aliases[i]);
357 OPENSSL_free(a->h_aliases);
358 }
359 if (a->h_addr_list != NULL) {
360 for (i = 0; a->h_addr_list[i] != NULL; i++)
361 OPENSSL_free(a->h_addr_list[i]);
362 OPENSSL_free(a->h_addr_list);
363 }
364 if (a->h_name != NULL)
365 OPENSSL_free(a->h_name);
366 OPENSSL_free(a);
367}
368
369#endif
370
371struct hostent
372*BIO_gethostbyname(const char *name)
373{
374#if 1
375 /* Caching gethostbyname() results forever is wrong,
376 * so we have to let the true gethostbyname() worry about this */
377#if (defined(NETWARE_BSDSOCK) && !defined(__NOVELL_LIBC__))
378 return gethostbyname((char*)name);
379#else
380 return gethostbyname(name); 246 return gethostbyname(name);
381#endif
382#else
383 struct hostent *ret;
384 int i, lowi = 0, j;
385 unsigned long low = (unsigned long) - 1;
386
387
388# if 0
389 /* It doesn't make sense to use locking here: The function interface
390 * is not thread-safe, because threads can never be sure when
391 * some other thread destroys the data they were given a pointer to.
392 */
393 CRYPTO_w_lock(CRYPTO_LOCK_GETHOSTBYNAME);
394# endif
395 j = strlen(name);
396 if (j < 128) {
397 for (i = 0; i < GHBN_NUM; i++) {
398 if (low > ghbn_cache[i].order) {
399 low = ghbn_cache[i].order;
400 lowi = i;
401 }
402 if (ghbn_cache[i].order > 0) {
403 if (strncmp(name, ghbn_cache[i].name, 128) == 0)
404 break;
405 }
406 }
407 } else
408 i = GHBN_NUM;
409
410 if (i == GHBN_NUM) /* no hit*/
411 {
412 BIO_ghbn_miss++;
413 /* Note: under VMS with SOCKETSHR, it seems like the first
414 * parameter is 'char *', instead of 'const char *'
415 */
416# ifndef CONST_STRICT
417 ret = gethostbyname((char *)name);
418# else
419 ret = gethostbyname(name);
420# endif
421
422 if (ret == NULL)
423 goto end;
424 if (j > 128) /* too big to cache */
425 {
426# if 0
427 /* If we were trying to make this function thread-safe (which
428 * is bound to fail), we'd have to give up in this case
429 * (or allocate more memory). */
430 ret = NULL;
431# endif
432 goto end;
433 }
434
435 /* else add to cache */
436 if (ghbn_cache[lowi].ent != NULL)
437 ghbn_free(ghbn_cache[lowi].ent); /* XXX not thread-safe */
438 ghbn_cache[lowi].name[0] = '\0';
439
440 if ((ret = ghbn_cache[lowi].ent = ghbn_dup(ret)) == NULL) {
441 BIOerr(BIO_F_BIO_GETHOSTBYNAME, ERR_R_MALLOC_FAILURE);
442 goto end;
443 }
444 strncpy(ghbn_cache[lowi].name, name, 128);
445 ghbn_cache[lowi].order = BIO_ghbn_miss + BIO_ghbn_hits;
446 } else {
447 BIO_ghbn_hits++;
448 ret = ghbn_cache[i].ent;
449 ghbn_cache[i].order = BIO_ghbn_miss + BIO_ghbn_hits;
450 }
451end:
452# if 0
453 CRYPTO_w_unlock(CRYPTO_LOCK_GETHOSTBYNAME);
454# endif
455 return (ret);
456#endif
457} 247}
458 248
459 249
460int 250int
461BIO_sock_init(void) 251BIO_sock_init(void)
462{ 252{
463#ifdef WATT32
464 extern int _watt_do_exit;
465 _watt_do_exit = 0;
466 /* don't make sock_init() call exit() */
467 if (sock_init())
468 return (-1);
469#endif
470
471#if defined(OPENSSL_SYS_NETWARE) && !defined(NETWARE_BSDSOCK)
472 WORD wVerReq;
473 WSADATA wsaData;
474 int err;
475
476 if (!wsa_init_done) {
477 wsa_init_done = 1;
478 wVerReq = MAKEWORD( 2, 0 );
479 err = WSAStartup(wVerReq, &wsaData);
480 if (err != 0) {
481 SYSerr(SYS_F_WSASTARTUP, err);
482 BIOerr(BIO_F_BIO_SOCK_INIT, BIO_R_WSASTARTUP);
483 return (-1);
484 }
485 }
486#endif
487
488 return (1); 253 return (1);
489} 254}
490 255
491void 256void
492BIO_sock_cleanup(void) 257BIO_sock_cleanup(void)
493{ 258{
494#if defined(OPENSSL_SYS_NETWARE) && !defined(NETWARE_BSDSOCK)
495 if (wsa_init_done) {
496 wsa_init_done = 0;
497 WSACleanup();
498 }
499#endif
500} 259}
501 260
502#if !defined(OPENSSL_SYS_VMS) || __VMS_VER >= 70000000
503
504int 261int
505BIO_socket_ioctl(int fd, long type, void *arg) 262BIO_socket_ioctl(int fd, long type, void *arg)
506{ 263{
@@ -509,28 +266,7 @@ BIO_socket_ioctl(int fd, long type, void *arg)
509#ifdef __DJGPP__ 266#ifdef __DJGPP__
510 i = ioctl(fd, type, (char *)arg); 267 i = ioctl(fd, type, (char *)arg);
511#else 268#else
512# if defined(OPENSSL_SYS_VMS)
513 /* 2011-02-18 SMS.
514 * VMS ioctl() can't tolerate a 64-bit "void *arg", but we
515 * observe that all the consumers pass in an "unsigned long *",
516 * so we arrange a local copy with a short pointer, and use
517 * that, instead.
518 */
519# if __INITIAL_POINTER_SIZE == 64
520# define ARG arg_32p
521# pragma pointer_size save
522# pragma pointer_size 32
523 unsigned long arg_32;
524 unsigned long *arg_32p;
525# pragma pointer_size restore
526 arg_32p = &arg_32;
527 arg_32 = *((unsigned long *) arg);
528# else /* __INITIAL_POINTER_SIZE == 64 */
529# define ARG arg
530# endif /* __INITIAL_POINTER_SIZE == 64 [else] */
531# else /* defined(OPENSSL_SYS_VMS) */
532# define ARG arg 269# define ARG arg
533# endif /* defined(OPENSSL_SYS_VMS) [else] */
534 270
535 i = ioctl(fd, type, ARG); 271 i = ioctl(fd, type, ARG);
536#endif /* __DJGPP__ */ 272#endif /* __DJGPP__ */
@@ -538,7 +274,6 @@ BIO_socket_ioctl(int fd, long type, void *arg)
538 SYSerr(SYS_F_IOCTLSOCKET, errno); 274 SYSerr(SYS_F_IOCTLSOCKET, errno);
539 return (i); 275 return (i);
540} 276}
541#endif /* __VMS_VER */
542 277
543/* The reason I have implemented this instead of using sscanf is because 278/* The reason I have implemented this instead of using sscanf is because
544 * Visual C 1.52c gives an unresolved external when linking a DLL :-( */ 279 * Visual C 1.52c gives an unresolved external when linking a DLL :-( */
diff --git a/src/lib/libcrypto/bio/bio.h b/src/lib/libcrypto/bio/bio.h
index 4f1d02ada5..9bae034daa 100644
--- a/src/lib/libcrypto/bio/bio.h
+++ b/src/lib/libcrypto/bio/bio.h
@@ -69,11 +69,7 @@
69#include <openssl/crypto.h> 69#include <openssl/crypto.h>
70 70
71#ifndef OPENSSL_NO_SCTP 71#ifndef OPENSSL_NO_SCTP
72# ifndef OPENSSL_SYS_VMS
73# include <stdint.h> 72# include <stdint.h>
74# else
75# include <inttypes.h>
76# endif
77#endif 73#endif
78 74
79#ifdef __cplusplus 75#ifdef __cplusplus
@@ -671,16 +667,11 @@ BIO_METHOD *BIO_s_socket(void);
671BIO_METHOD *BIO_s_connect(void); 667BIO_METHOD *BIO_s_connect(void);
672BIO_METHOD *BIO_s_accept(void); 668BIO_METHOD *BIO_s_accept(void);
673BIO_METHOD *BIO_s_fd(void); 669BIO_METHOD *BIO_s_fd(void);
674#ifndef OPENSSL_SYS_OS2
675BIO_METHOD *BIO_s_log(void); 670BIO_METHOD *BIO_s_log(void);
676#endif
677BIO_METHOD *BIO_s_bio(void); 671BIO_METHOD *BIO_s_bio(void);
678BIO_METHOD *BIO_s_null(void); 672BIO_METHOD *BIO_s_null(void);
679BIO_METHOD *BIO_f_null(void); 673BIO_METHOD *BIO_f_null(void);
680BIO_METHOD *BIO_f_buffer(void); 674BIO_METHOD *BIO_f_buffer(void);
681#ifdef OPENSSL_SYS_VMS
682BIO_METHOD *BIO_f_linebuffer(void);
683#endif
684BIO_METHOD *BIO_f_nbio_test(void); 675BIO_METHOD *BIO_f_nbio_test(void);
685#ifndef OPENSSL_NO_DGRAM 676#ifndef OPENSSL_NO_DGRAM
686BIO_METHOD *BIO_s_datagram(void); 677BIO_METHOD *BIO_s_datagram(void);
diff --git a/src/lib/libcrypto/bio/bio_cb.c b/src/lib/libcrypto/bio/bio_cb.c
index 00f41b1de1..a272bf969a 100644
--- a/src/lib/libcrypto/bio/bio_cb.c
+++ b/src/lib/libcrypto/bio/bio_cb.c
@@ -139,7 +139,7 @@ BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, long argl,
139 b = (BIO *)bio->cb_arg; 139 b = (BIO *)bio->cb_arg;
140 if (b != NULL) 140 if (b != NULL)
141 BIO_write(b, buf, strlen(buf)); 141 BIO_write(b, buf, strlen(buf));
142#if !defined(OPENSSL_NO_STDIO) && !defined(OPENSSL_SYS_WIN16) 142#if !defined(OPENSSL_NO_STDIO)
143 else 143 else
144 fputs(buf, stderr); 144 fputs(buf, stderr);
145#endif 145#endif
diff --git a/src/lib/libcrypto/bio/bio_lcl.h b/src/lib/libcrypto/bio/bio_lcl.h
index e7f7ec8d8b..cc89c1bf2d 100644
--- a/src/lib/libcrypto/bio/bio_lcl.h
+++ b/src/lib/libcrypto/bio/bio_lcl.h
@@ -18,14 +18,6 @@
18#define UP_ftell ftell 18#define UP_ftell ftell
19#define UP_fflush fflush 19#define UP_fflush fflush
20#define UP_ferror ferror 20#define UP_ferror ferror
21#ifdef _WIN32
22#define UP_fileno _fileno
23#define UP_open _open
24#define UP_read _read
25#define UP_write _write
26#define UP_lseek _lseek
27#define UP_close _close
28#else
29#define UP_fileno fileno 21#define UP_fileno fileno
30#define UP_open open 22#define UP_open open
31#define UP_read read 23#define UP_read read
@@ -33,4 +25,3 @@
33#define UP_lseek lseek 25#define UP_lseek lseek
34#define UP_close close 26#define UP_close close
35#endif 27#endif
36#endif
diff --git a/src/lib/libcrypto/bio/bss_acpt.c b/src/lib/libcrypto/bio/bss_acpt.c
index d772515d64..d7c151eaaa 100644
--- a/src/lib/libcrypto/bio/bss_acpt.c
+++ b/src/lib/libcrypto/bio/bss_acpt.c
@@ -64,16 +64,7 @@
64 64
65#ifndef OPENSSL_NO_SOCK 65#ifndef OPENSSL_NO_SOCK
66 66
67#ifdef OPENSSL_SYS_WIN16
68#define SOCKET_PROTOCOL 0 /* more microsoft stupidity */
69#else
70#define SOCKET_PROTOCOL IPPROTO_TCP 67#define SOCKET_PROTOCOL IPPROTO_TCP
71#endif
72
73#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000)
74/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */
75#undef FIONBIO
76#endif
77 68
78typedef struct bio_accept_st { 69typedef struct bio_accept_st {
79 int state; 70 int state;
diff --git a/src/lib/libcrypto/bio/bss_conn.c b/src/lib/libcrypto/bio/bss_conn.c
index df34c49a4a..db877b140b 100644
--- a/src/lib/libcrypto/bio/bss_conn.c
+++ b/src/lib/libcrypto/bio/bss_conn.c
@@ -64,17 +64,7 @@
64 64
65#ifndef OPENSSL_NO_SOCK 65#ifndef OPENSSL_NO_SOCK
66 66
67#ifdef OPENSSL_SYS_WIN16
68#define SOCKET_PROTOCOL 0 /* more microsoft stupidity */
69#else
70#define SOCKET_PROTOCOL IPPROTO_TCP 67#define SOCKET_PROTOCOL IPPROTO_TCP
71#endif
72
73#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000)
74/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */
75#undef FIONBIO
76#endif
77
78 68
79typedef struct bio_connect_st { 69typedef struct bio_connect_st {
80 int state; 70 int state;
diff --git a/src/lib/libcrypto/bio/bss_dgram.c b/src/lib/libcrypto/bio/bss_dgram.c
index 9219fffc8d..478c765399 100644
--- a/src/lib/libcrypto/bio/bss_dgram.c
+++ b/src/lib/libcrypto/bio/bss_dgram.c
@@ -66,10 +66,6 @@
66#include <openssl/bio.h> 66#include <openssl/bio.h>
67#ifndef OPENSSL_NO_DGRAM 67#ifndef OPENSSL_NO_DGRAM
68 68
69#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS)
70#include <sys/timeb.h>
71#endif
72
73#ifndef OPENSSL_NO_SCTP 69#ifndef OPENSSL_NO_SCTP
74#include <netinet/sctp.h> 70#include <netinet/sctp.h>
75#include <fcntl.h> 71#include <fcntl.h>
@@ -91,12 +87,6 @@
91 ((a)->s6_addr32[2] == htonl(0x0000ffff))) 87 ((a)->s6_addr32[2] == htonl(0x0000ffff)))
92#endif 88#endif
93 89
94#ifdef WATT32
95#define sock_write SockWrite /* Watt-32 uses same names */
96#define sock_read SockRead
97#define sock_puts SockPuts
98#endif
99
100static int dgram_write(BIO *h, const char *buf, int num); 90static int dgram_write(BIO *h, const char *buf, int num);
101static int dgram_read(BIO *h, char *buf, int size); 91static int dgram_read(BIO *h, char *buf, int size);
102static int dgram_puts(BIO *h, const char *str); 92static int dgram_puts(BIO *h, const char *str);
diff --git a/src/lib/libcrypto/bio/bss_file.c b/src/lib/libcrypto/bio/bss_file.c
index 982317b34a..59e48e6659 100644
--- a/src/lib/libcrypto/bio/bss_file.c
+++ b/src/lib/libcrypto/bio/bss_file.c
@@ -89,10 +89,6 @@
89#include "bio_lcl.h" 89#include "bio_lcl.h"
90#include <openssl/err.h> 90#include <openssl/err.h>
91 91
92#if defined(OPENSSL_SYS_NETWARE) && defined(NETWARE_CLIB)
93#include <nwfileio.h>
94#endif
95
96#if !defined(OPENSSL_NO_STDIO) 92#if !defined(OPENSSL_NO_STDIO)
97 93
98static int file_write(BIO *h, const char *buf, int num); 94static int file_write(BIO *h, const char *buf, int num);
@@ -122,46 +118,8 @@ BIO
122 BIO *ret; 118 BIO *ret;
123 FILE *file = NULL; 119 FILE *file = NULL;
124 120
125#if defined(_WIN32) && defined(CP_UTF8)
126 int sz, len_0 = (int)strlen(filename) + 1;
127 DWORD flags;
128
129 /*
130 * Basically there are three cases to cover: a) filename is
131 * pure ASCII string; b) actual UTF-8 encoded string and
132 * c) locale-ized string, i.e. one containing 8-bit
133 * characters that are meaningful in current system locale.
134 * If filename is pure ASCII or real UTF-8 encoded string,
135 * MultiByteToWideChar succeeds and _wfopen works. If
136 * filename is locale-ized string, chances are that
137 * MultiByteToWideChar fails reporting
138 * ERROR_NO_UNICODE_TRANSLATION, in which case we fall
139 * back to fopen...
140 */
141 if ((sz = MultiByteToWideChar(CP_UTF8,(flags = MB_ERR_INVALID_CHARS),
142 filename, len_0, NULL, 0)) > 0 ||
143 (GetLastError() == ERROR_INVALID_FLAGS &&
144 (sz = MultiByteToWideChar(CP_UTF8,(flags = 0),
145 filename, len_0, NULL, 0)) > 0)) {
146 WCHAR wmode[8];
147 WCHAR *wfilename = _alloca(sz*sizeof(WCHAR));
148
149 if (MultiByteToWideChar(CP_UTF8, flags, filename, len_0,
150 wfilename, sz) && MultiByteToWideChar(CP_UTF8, 0, mode,
151 strlen(mode) + 1, wmode,
152 sizeof(wmode) / sizeof(wmode[0])) &&
153 (file = _wfopen(wfilename, wmode)) == NULL &&
154 (errno == ENOENT || errno == EBADF)
155 ) /* UTF - 8 decode succeeded, but no file, filename
156 * could still have been locale-ized... */
157 file = fopen(filename, mode);
158 } else if (GetLastError() == ERROR_NO_UNICODE_TRANSLATION) {
159 file = fopen(filename, mode);
160 }
161#else
162 file = fopen(filename, mode); 121 file = fopen(filename, mode);
163 122
164#endif
165 if (file == NULL) { 123 if (file == NULL) {
166 SYSerr(SYS_F_FOPEN, errno); 124 SYSerr(SYS_F_FOPEN, errno);
167 ERR_add_error_data(5, "fopen('", filename, "', '", mode, "')"); 125 ERR_add_error_data(5, "fopen('", filename, "', '", mode, "')");
@@ -304,9 +262,6 @@ file_ctrl(BIO *b, int cmd, long num, void *ptr)
304 b->ptr = ptr; 262 b->ptr = ptr;
305 b->init = 1; 263 b->init = 1;
306#if BIO_FLAGS_UPLINK!=0 264#if BIO_FLAGS_UPLINK!=0
307#if defined(__MINGW32__) && defined(__MSVCRT__) && !defined(_IOB_ENTRIES)
308#define _IOB_ENTRIES 20
309#endif
310#if defined(_IOB_ENTRIES) 265#if defined(_IOB_ENTRIES)
311 /* Safety net to catch purely internal BIO_set_fp calls */ 266 /* Safety net to catch purely internal BIO_set_fp calls */
312 if ((size_t)ptr >= (size_t)stdin && 267 if ((size_t)ptr >= (size_t)stdin &&
@@ -317,37 +272,7 @@ file_ctrl(BIO *b, int cmd, long num, void *ptr)
317#ifdef UP_fsetmod 272#ifdef UP_fsetmod
318 if (b->flags&BIO_FLAGS_UPLINK) 273 if (b->flags&BIO_FLAGS_UPLINK)
319 UP_fsetmod(b->ptr,(char)((num&BIO_FP_TEXT)?'t':'b')); 274 UP_fsetmod(b->ptr,(char)((num&BIO_FP_TEXT)?'t':'b'));
320 else
321#endif 275#endif
322 {
323#if defined(OPENSSL_SYS_NETWARE) && defined(NETWARE_CLIB)
324 int fd = fileno((FILE*)ptr);
325 /* Under CLib there are differences in file modes */
326 if (num & BIO_FP_TEXT)
327 setmode(fd, O_TEXT);
328 else
329 setmode(fd, O_BINARY);
330#elif defined(OPENSSL_SYS_MSDOS)
331 int fd = fileno((FILE*)ptr);
332 /* Set correct text/binary mode */
333 if (num & BIO_FP_TEXT)
334 _setmode(fd, _O_TEXT);
335 /* Dangerous to set stdin/stdout to raw (unless redirected) */
336 else {
337 if (fd == STDIN_FILENO || fd == STDOUT_FILENO) {
338 if (isatty(fd) <= 0)
339 _setmode(fd, _O_BINARY);
340 } else
341 _setmode(fd, _O_BINARY);
342 }
343#elif defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_WIN32_CYGWIN)
344 int fd = fileno((FILE*)ptr);
345 if (num & BIO_FP_TEXT)
346 setmode(fd, O_TEXT);
347 else
348 setmode(fd, O_BINARY);
349#endif
350 }
351 break; 276 break;
352 case BIO_C_SET_FILENAME: 277 case BIO_C_SET_FILENAME:
353 file_free(b); 278 file_free(b);
@@ -367,18 +292,6 @@ file_ctrl(BIO *b, int cmd, long num, void *ptr)
367 ret = 0; 292 ret = 0;
368 break; 293 break;
369 } 294 }
370#if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_WIN32_CYGWIN)
371 if (!(num & BIO_FP_TEXT))
372 strcat(p, "b");
373 else
374 strcat(p, "t");
375#endif
376#if defined(OPENSSL_SYS_NETWARE)
377 if (!(num & BIO_FP_TEXT))
378 strcat(p, "b");
379 else
380 strcat(p, "t");
381#endif
382 fp = fopen(ptr, p); 295 fp = fopen(ptr, p);
383 if (fp == NULL) { 296 if (fp == NULL) {
384 SYSerr(SYS_F_FOPEN, errno); 297 SYSerr(SYS_F_FOPEN, errno);
diff --git a/src/lib/libcrypto/bio/bss_log.c b/src/lib/libcrypto/bio/bss_log.c
index 9225af4df2..5a79f72673 100644
--- a/src/lib/libcrypto/bio/bss_log.c
+++ b/src/lib/libcrypto/bio/bss_log.c
@@ -68,59 +68,13 @@
68 68
69#include "cryptlib.h" 69#include "cryptlib.h"
70 70
71#if defined(OPENSSL_SYS_WINCE) 71#include <syslog.h>
72#elif defined(OPENSSL_SYS_WIN32)
73#elif defined(OPENSSL_SYS_VMS)
74# include <opcdef.h>
75# include <descrip.h>
76# include <lib$routines.h>
77# include <starlet.h>
78/* Some compiler options may mask the declaration of "_malloc32". */
79# if __INITIAL_POINTER_SIZE && defined _ANSI_C_SOURCE
80# if __INITIAL_POINTER_SIZE == 64
81# pragma pointer_size save
82# pragma pointer_size 32
83void * _malloc32 (__size_t);
84# pragma pointer_size restore
85# endif /* __INITIAL_POINTER_SIZE == 64 */
86# endif /* __INITIAL_POINTER_SIZE && defined _ANSI_C_SOURCE */
87#elif defined(__ultrix)
88# include <sys/syslog.h>
89#elif defined(OPENSSL_SYS_NETWARE)
90# define NO_SYSLOG
91#elif (!defined(MSDOS) || defined(WATT32)) && !defined(OPENSSL_SYS_VXWORKS) && !defined(NO_SYSLOG)
92# include <syslog.h>
93#endif
94 72
95#include <openssl/buffer.h> 73#include <openssl/buffer.h>
96#include <openssl/err.h> 74#include <openssl/err.h>
97 75
98#ifndef NO_SYSLOG 76#ifndef NO_SYSLOG
99 77
100#if defined(OPENSSL_SYS_WIN32)
101#define LOG_EMERG 0
102#define LOG_ALERT 1
103#define LOG_CRIT 2
104#define LOG_ERR 3
105#define LOG_WARNING 4
106#define LOG_NOTICE 5
107#define LOG_INFO 6
108#define LOG_DEBUG 7
109
110#define LOG_DAEMON (3<<3)
111#elif defined(OPENSSL_SYS_VMS)
112/* On VMS, we don't really care about these, but we need them to compile */
113#define LOG_EMERG 0
114#define LOG_ALERT 1
115#define LOG_CRIT 2
116#define LOG_ERR 3
117#define LOG_WARNING 4
118#define LOG_NOTICE 5
119#define LOG_INFO 6
120#define LOG_DEBUG 7
121
122#define LOG_DAEMON OPC$M_NM_NTWORK
123#endif
124 78
125static int slg_write(BIO *h, const char *buf, int num); 79static int slg_write(BIO *h, const char *buf, int num);
126static int slg_puts(BIO *h, const char *str); 80static int slg_puts(BIO *h, const char *str);
@@ -245,161 +199,11 @@ slg_puts(BIO *bp, const char *str)
245 return (ret); 199 return (ret);
246} 200}
247 201
248#if defined(OPENSSL_SYS_WIN32)
249
250static void
251xopenlog(BIO* bp, char* name, int level)
252{
253 if (check_winnt())
254 bp->ptr = RegisterEventSourceA(NULL, name);
255 else
256 bp->ptr = NULL;
257}
258
259static void
260xsyslog(BIO *bp, int priority, const char *string)
261{
262 LPCSTR lpszStrings[2];
263 WORD evtype = EVENTLOG_ERROR_TYPE;
264 char pidbuf[DECIMAL_SIZE(DWORD) + 4];
265
266 if (bp->ptr == NULL)
267 return;
268
269 switch (priority) {
270 case LOG_EMERG:
271 case LOG_ALERT:
272 case LOG_CRIT:
273 case LOG_ERR:
274 evtype = EVENTLOG_ERROR_TYPE;
275 break;
276 case LOG_WARNING:
277 evtype = EVENTLOG_WARNING_TYPE;
278 break;
279 case LOG_NOTICE:
280 case LOG_INFO:
281 case LOG_DEBUG:
282 evtype = EVENTLOG_INFORMATION_TYPE;
283 break;
284 default: /* Should never happen, but set it
285 as error anyway. */
286 evtype = EVENTLOG_ERROR_TYPE;
287 break;
288 }
289
290 sprintf(pidbuf, "[%u] ", GetCurrentProcessId());
291 lpszStrings[0] = pidbuf;
292 lpszStrings[1] = string;
293
294 ReportEventA(bp->ptr, evtype, 0, 1024, NULL, 2, 0,
295 lpszStrings, NULL);
296}
297
298static void
299xcloselog(BIO* bp)
300{
301 if (bp->ptr)
302 DeregisterEventSource((HANDLE)(bp->ptr));
303 bp->ptr = NULL;
304}
305
306#elif defined(OPENSSL_SYS_VMS)
307
308static int VMS_OPC_target = LOG_DAEMON;
309
310static void
311xopenlog(BIO* bp, char* name, int level)
312{
313 VMS_OPC_target = level;
314
315}
316
317static void
318xsyslog(BIO *bp, int priority, const char *string)
319{
320 struct dsc$descriptor_s opc_dsc;
321
322/* Arrange 32-bit pointer to opcdef buffer and malloc(), if needed. */
323#if __INITIAL_POINTER_SIZE == 64
324# pragma pointer_size save
325# pragma pointer_size 32
326# define OPCDEF_TYPE __char_ptr32
327# define OPCDEF_MALLOC _malloc32
328#else /* __INITIAL_POINTER_SIZE == 64 */
329# define OPCDEF_TYPE char *
330# define OPCDEF_MALLOC OPENSSL_malloc
331#endif /* __INITIAL_POINTER_SIZE == 64 [else] */
332
333 struct opcdef *opcdef_p;
334
335#if __INITIAL_POINTER_SIZE == 64
336# pragma pointer_size restore
337#endif /* __INITIAL_POINTER_SIZE == 64 */
338
339 char buf[10240];
340 unsigned int len;
341 struct dsc$descriptor_s buf_dsc;
342 $DESCRIPTOR(fao_cmd, "!AZ: !AZ");
343 char *priority_tag;
344
345 switch (priority) {
346 case LOG_EMERG:
347 priority_tag = "Emergency"; break;
348 case LOG_ALERT:
349 priority_tag = "Alert"; break;
350 case LOG_CRIT:
351 priority_tag = "Critical"; break;
352 case LOG_ERR:
353 priority_tag = "Error"; break;
354 case LOG_WARNING:
355 priority_tag = "Warning"; break;
356 case LOG_NOTICE:
357 priority_tag = "Notice"; break;
358 case LOG_INFO:
359 priority_tag = "Info"; break;
360 case LOG_DEBUG:
361 priority_tag = "DEBUG"; break;
362 }
363
364 buf_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
365 buf_dsc.dsc$b_class = DSC$K_CLASS_S;
366 buf_dsc.dsc$a_pointer = buf;
367 buf_dsc.dsc$w_length = sizeof(buf) - 1;
368
369 lib$sys_fao(&fao_cmd, &len, &buf_dsc, priority_tag, string);
370
371 /* We know there's an 8-byte header. That's documented. */
372 opcdef_p = OPCDEF_MALLOC( 8 + len);
373 opcdef_p->opc$b_ms_type = OPC$_RQ_RQST;
374 memcpy(opcdef_p->opc$z_ms_target_classes, &VMS_OPC_target, 3);
375 opcdef_p->opc$l_ms_rqstid = 0;
376 memcpy(&opcdef_p->opc$l_ms_text, buf, len);
377
378 opc_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
379 opc_dsc.dsc$b_class = DSC$K_CLASS_S;
380 opc_dsc.dsc$a_pointer = (OPCDEF_TYPE) opcdef_p;
381 opc_dsc.dsc$w_length = len + 8;
382
383 sys$sndopr(opc_dsc, 0);
384
385 OPENSSL_free(opcdef_p);
386}
387
388static void
389xcloselog(BIO* bp)
390{
391}
392
393#else /* Unix/Watt32 */
394 202
395static void 203static void
396xopenlog(BIO* bp, char* name, int level) 204xopenlog(BIO* bp, char* name, int level)
397{ 205{
398#ifdef WATT32 /* djgpp/DOS */
399 openlog(name, LOG_PID|LOG_CONS|LOG_NDELAY, level);
400#else
401 openlog(name, LOG_PID|LOG_CONS, level); 206 openlog(name, LOG_PID|LOG_CONS, level);
402#endif
403} 207}
404 208
405static void 209static void
@@ -414,6 +218,5 @@ xcloselog(BIO* bp)
414 closelog(); 218 closelog();
415} 219}
416 220
417#endif /* Unix */
418 221
419#endif /* NO_SYSLOG */ 222#endif /* NO_SYSLOG */
diff --git a/src/lib/libcrypto/bio/bss_sock.c b/src/lib/libcrypto/bio/bss_sock.c
index c05b8d37f1..b9cf817a0c 100644
--- a/src/lib/libcrypto/bio/bss_sock.c
+++ b/src/lib/libcrypto/bio/bss_sock.c
@@ -65,12 +65,6 @@
65 65
66#include <openssl/bio.h> 66#include <openssl/bio.h>
67 67
68#ifdef WATT32
69#define sock_write SockWrite /* Watt-32 uses same names */
70#define sock_read SockRead
71#define sock_puts SockPuts
72#endif
73
74static int sock_write(BIO *h, const char *buf, int num); 68static int sock_write(BIO *h, const char *buf, int num);
75static int sock_read(BIO *h, char *buf, int size); 69static int sock_read(BIO *h, char *buf, int size);
76static int sock_puts(BIO *h, const char *str); 70static int sock_puts(BIO *h, const char *str);
diff --git a/src/lib/libssl/src/crypto/bio/b_sock.c b/src/lib/libssl/src/crypto/bio/b_sock.c
index cd62f889ab..3ccebf77f4 100644
--- a/src/lib/libssl/src/crypto/bio/b_sock.c
+++ b/src/lib/libssl/src/crypto/bio/b_sock.c
@@ -184,14 +184,7 @@ BIO_get_port(const char *str, unsigned short *port_ptr)
184 *port_ptr = (unsigned short)i; 184 *port_ptr = (unsigned short)i;
185 else { 185 else {
186 CRYPTO_w_lock(CRYPTO_LOCK_GETSERVBYNAME); 186 CRYPTO_w_lock(CRYPTO_LOCK_GETSERVBYNAME);
187 /* Note: under VMS with SOCKETSHR, it seems like the first
188 * parameter is 'char *', instead of 'const char *'
189 */
190#ifndef CONST_STRICT
191 s = getservbyname((char *)str, "tcp");
192#else
193 s = getservbyname(str, "tcp"); 187 s = getservbyname(str, "tcp");
194#endif
195 if (s != NULL) 188 if (s != NULL)
196 *port_ptr = ntohs((unsigned short)s->s_port); 189 *port_ptr = ntohs((unsigned short)s->s_port);
197 CRYPTO_w_unlock(CRYPTO_LOCK_GETSERVBYNAME); 190 CRYPTO_w_unlock(CRYPTO_LOCK_GETSERVBYNAME);
@@ -247,260 +240,24 @@ BIO_sock_error(int sock)
247 return (j); 240 return (j);
248} 241}
249 242
250#if 0 243struct hostent *
251long 244BIO_gethostbyname(const char *name)
252BIO_ghbn_ctrl(int cmd, int iarg, char *parg)
253{
254 int i;
255 char **p;
256
257 switch (cmd) {
258 case BIO_GHBN_CTRL_HITS:
259 return (BIO_ghbn_hits);
260 /* break; */
261 case BIO_GHBN_CTRL_MISSES:
262 return (BIO_ghbn_miss);
263 /* break; */
264 case BIO_GHBN_CTRL_CACHE_SIZE:
265 return (GHBN_NUM);
266 /* break; */
267 case BIO_GHBN_CTRL_GET_ENTRY:
268 if ((iarg >= 0) && (iarg < GHBN_NUM) &&
269 (ghbn_cache[iarg].order > 0)) {
270 p = (char **)parg;
271 if (p == NULL)
272 return (0);
273 *p = ghbn_cache[iarg].name;
274 ghbn_cache[iarg].name[128] = '\0';
275 return (1);
276 }
277 return (0);
278 /* break; */
279 case BIO_GHBN_CTRL_FLUSH:
280 for (i = 0; i < GHBN_NUM; i++)
281 ghbn_cache[i].order = 0;
282 break;
283 default:
284 return (0);
285 }
286 return (1);
287}
288#endif
289
290#if 0
291static struct hostent
292*ghbn_dup(struct hostent *a)
293{ 245{
294 struct hostent *ret;
295 int i, j;
296
297 MemCheck_off();
298 ret = (struct hostent *)OPENSSL_malloc(sizeof(struct hostent));
299 if (ret == NULL)
300 return (NULL);
301 memset(ret, 0, sizeof(struct hostent));
302
303 for (i = 0; a->h_aliases[i] != NULL; i++)
304 ;
305 i++;
306 ret->h_aliases = (char **)OPENSSL_malloc(i*sizeof(char *));
307 if (ret->h_aliases == NULL)
308 goto err;
309 memset(ret->h_aliases, 0, i*sizeof(char *));
310
311 for (i = 0; a->h_addr_list[i] != NULL; i++)
312 ;
313 i++;
314 ret->h_addr_list = (char **)OPENSSL_malloc(i*sizeof(char *));
315 if (ret->h_addr_list == NULL)
316 goto err;
317 memset(ret->h_addr_list, 0, i*sizeof(char *));
318
319 j = strlen(a->h_name) + 1;
320 if ((ret->h_name = OPENSSL_malloc(j)) == NULL)
321 goto err;
322 memcpy((char *)ret->h_name, a->h_name, j);
323 for (i = 0; a->h_aliases[i] != NULL; i++) {
324 j = strlen(a->h_aliases[i]) + 1;
325 if ((ret->h_aliases[i] = OPENSSL_malloc(j)) == NULL)
326 goto err;
327 memcpy(ret->h_aliases[i], a->h_aliases[i], j);
328 }
329 ret->h_length = a->h_length;
330 ret->h_addrtype = a->h_addrtype;
331 for (i = 0; a->h_addr_list[i] != NULL; i++) {
332 if ((ret->h_addr_list[i] = OPENSSL_malloc(a->h_length)) == NULL)
333 goto err;
334 memcpy(ret->h_addr_list[i], a->h_addr_list[i], a->h_length);
335 }
336 if (0) {
337err:
338 if (ret != NULL)
339 ghbn_free(ret);
340 ret = NULL;
341 }
342 MemCheck_on();
343 return (ret);
344}
345
346static void
347ghbn_free(struct hostent *a)
348{
349 int i;
350
351 if (a == NULL)
352 return;
353
354 if (a->h_aliases != NULL) {
355 for (i = 0; a->h_aliases[i] != NULL; i++)
356 OPENSSL_free(a->h_aliases[i]);
357 OPENSSL_free(a->h_aliases);
358 }
359 if (a->h_addr_list != NULL) {
360 for (i = 0; a->h_addr_list[i] != NULL; i++)
361 OPENSSL_free(a->h_addr_list[i]);
362 OPENSSL_free(a->h_addr_list);
363 }
364 if (a->h_name != NULL)
365 OPENSSL_free(a->h_name);
366 OPENSSL_free(a);
367}
368
369#endif
370
371struct hostent
372*BIO_gethostbyname(const char *name)
373{
374#if 1
375 /* Caching gethostbyname() results forever is wrong,
376 * so we have to let the true gethostbyname() worry about this */
377#if (defined(NETWARE_BSDSOCK) && !defined(__NOVELL_LIBC__))
378 return gethostbyname((char*)name);
379#else
380 return gethostbyname(name); 246 return gethostbyname(name);
381#endif
382#else
383 struct hostent *ret;
384 int i, lowi = 0, j;
385 unsigned long low = (unsigned long) - 1;
386
387
388# if 0
389 /* It doesn't make sense to use locking here: The function interface
390 * is not thread-safe, because threads can never be sure when
391 * some other thread destroys the data they were given a pointer to.
392 */
393 CRYPTO_w_lock(CRYPTO_LOCK_GETHOSTBYNAME);
394# endif
395 j = strlen(name);
396 if (j < 128) {
397 for (i = 0; i < GHBN_NUM; i++) {
398 if (low > ghbn_cache[i].order) {
399 low = ghbn_cache[i].order;
400 lowi = i;
401 }
402 if (ghbn_cache[i].order > 0) {
403 if (strncmp(name, ghbn_cache[i].name, 128) == 0)
404 break;
405 }
406 }
407 } else
408 i = GHBN_NUM;
409
410 if (i == GHBN_NUM) /* no hit*/
411 {
412 BIO_ghbn_miss++;
413 /* Note: under VMS with SOCKETSHR, it seems like the first
414 * parameter is 'char *', instead of 'const char *'
415 */
416# ifndef CONST_STRICT
417 ret = gethostbyname((char *)name);
418# else
419 ret = gethostbyname(name);
420# endif
421
422 if (ret == NULL)
423 goto end;
424 if (j > 128) /* too big to cache */
425 {
426# if 0
427 /* If we were trying to make this function thread-safe (which
428 * is bound to fail), we'd have to give up in this case
429 * (or allocate more memory). */
430 ret = NULL;
431# endif
432 goto end;
433 }
434
435 /* else add to cache */
436 if (ghbn_cache[lowi].ent != NULL)
437 ghbn_free(ghbn_cache[lowi].ent); /* XXX not thread-safe */
438 ghbn_cache[lowi].name[0] = '\0';
439
440 if ((ret = ghbn_cache[lowi].ent = ghbn_dup(ret)) == NULL) {
441 BIOerr(BIO_F_BIO_GETHOSTBYNAME, ERR_R_MALLOC_FAILURE);
442 goto end;
443 }
444 strncpy(ghbn_cache[lowi].name, name, 128);
445 ghbn_cache[lowi].order = BIO_ghbn_miss + BIO_ghbn_hits;
446 } else {
447 BIO_ghbn_hits++;
448 ret = ghbn_cache[i].ent;
449 ghbn_cache[i].order = BIO_ghbn_miss + BIO_ghbn_hits;
450 }
451end:
452# if 0
453 CRYPTO_w_unlock(CRYPTO_LOCK_GETHOSTBYNAME);
454# endif
455 return (ret);
456#endif
457} 247}
458 248
459 249
460int 250int
461BIO_sock_init(void) 251BIO_sock_init(void)
462{ 252{
463#ifdef WATT32
464 extern int _watt_do_exit;
465 _watt_do_exit = 0;
466 /* don't make sock_init() call exit() */
467 if (sock_init())
468 return (-1);
469#endif
470
471#if defined(OPENSSL_SYS_NETWARE) && !defined(NETWARE_BSDSOCK)
472 WORD wVerReq;
473 WSADATA wsaData;
474 int err;
475
476 if (!wsa_init_done) {
477 wsa_init_done = 1;
478 wVerReq = MAKEWORD( 2, 0 );
479 err = WSAStartup(wVerReq, &wsaData);
480 if (err != 0) {
481 SYSerr(SYS_F_WSASTARTUP, err);
482 BIOerr(BIO_F_BIO_SOCK_INIT, BIO_R_WSASTARTUP);
483 return (-1);
484 }
485 }
486#endif
487
488 return (1); 253 return (1);
489} 254}
490 255
491void 256void
492BIO_sock_cleanup(void) 257BIO_sock_cleanup(void)
493{ 258{
494#if defined(OPENSSL_SYS_NETWARE) && !defined(NETWARE_BSDSOCK)
495 if (wsa_init_done) {
496 wsa_init_done = 0;
497 WSACleanup();
498 }
499#endif
500} 259}
501 260
502#if !defined(OPENSSL_SYS_VMS) || __VMS_VER >= 70000000
503
504int 261int
505BIO_socket_ioctl(int fd, long type, void *arg) 262BIO_socket_ioctl(int fd, long type, void *arg)
506{ 263{
@@ -509,28 +266,7 @@ BIO_socket_ioctl(int fd, long type, void *arg)
509#ifdef __DJGPP__ 266#ifdef __DJGPP__
510 i = ioctl(fd, type, (char *)arg); 267 i = ioctl(fd, type, (char *)arg);
511#else 268#else
512# if defined(OPENSSL_SYS_VMS)
513 /* 2011-02-18 SMS.
514 * VMS ioctl() can't tolerate a 64-bit "void *arg", but we
515 * observe that all the consumers pass in an "unsigned long *",
516 * so we arrange a local copy with a short pointer, and use
517 * that, instead.
518 */
519# if __INITIAL_POINTER_SIZE == 64
520# define ARG arg_32p
521# pragma pointer_size save
522# pragma pointer_size 32
523 unsigned long arg_32;
524 unsigned long *arg_32p;
525# pragma pointer_size restore
526 arg_32p = &arg_32;
527 arg_32 = *((unsigned long *) arg);
528# else /* __INITIAL_POINTER_SIZE == 64 */
529# define ARG arg
530# endif /* __INITIAL_POINTER_SIZE == 64 [else] */
531# else /* defined(OPENSSL_SYS_VMS) */
532# define ARG arg 269# define ARG arg
533# endif /* defined(OPENSSL_SYS_VMS) [else] */
534 270
535 i = ioctl(fd, type, ARG); 271 i = ioctl(fd, type, ARG);
536#endif /* __DJGPP__ */ 272#endif /* __DJGPP__ */
@@ -538,7 +274,6 @@ BIO_socket_ioctl(int fd, long type, void *arg)
538 SYSerr(SYS_F_IOCTLSOCKET, errno); 274 SYSerr(SYS_F_IOCTLSOCKET, errno);
539 return (i); 275 return (i);
540} 276}
541#endif /* __VMS_VER */
542 277
543/* The reason I have implemented this instead of using sscanf is because 278/* The reason I have implemented this instead of using sscanf is because
544 * Visual C 1.52c gives an unresolved external when linking a DLL :-( */ 279 * Visual C 1.52c gives an unresolved external when linking a DLL :-( */
diff --git a/src/lib/libssl/src/crypto/bio/bio.h b/src/lib/libssl/src/crypto/bio/bio.h
index 4f1d02ada5..9bae034daa 100644
--- a/src/lib/libssl/src/crypto/bio/bio.h
+++ b/src/lib/libssl/src/crypto/bio/bio.h
@@ -69,11 +69,7 @@
69#include <openssl/crypto.h> 69#include <openssl/crypto.h>
70 70
71#ifndef OPENSSL_NO_SCTP 71#ifndef OPENSSL_NO_SCTP
72# ifndef OPENSSL_SYS_VMS
73# include <stdint.h> 72# include <stdint.h>
74# else
75# include <inttypes.h>
76# endif
77#endif 73#endif
78 74
79#ifdef __cplusplus 75#ifdef __cplusplus
@@ -671,16 +667,11 @@ BIO_METHOD *BIO_s_socket(void);
671BIO_METHOD *BIO_s_connect(void); 667BIO_METHOD *BIO_s_connect(void);
672BIO_METHOD *BIO_s_accept(void); 668BIO_METHOD *BIO_s_accept(void);
673BIO_METHOD *BIO_s_fd(void); 669BIO_METHOD *BIO_s_fd(void);
674#ifndef OPENSSL_SYS_OS2
675BIO_METHOD *BIO_s_log(void); 670BIO_METHOD *BIO_s_log(void);
676#endif
677BIO_METHOD *BIO_s_bio(void); 671BIO_METHOD *BIO_s_bio(void);
678BIO_METHOD *BIO_s_null(void); 672BIO_METHOD *BIO_s_null(void);
679BIO_METHOD *BIO_f_null(void); 673BIO_METHOD *BIO_f_null(void);
680BIO_METHOD *BIO_f_buffer(void); 674BIO_METHOD *BIO_f_buffer(void);
681#ifdef OPENSSL_SYS_VMS
682BIO_METHOD *BIO_f_linebuffer(void);
683#endif
684BIO_METHOD *BIO_f_nbio_test(void); 675BIO_METHOD *BIO_f_nbio_test(void);
685#ifndef OPENSSL_NO_DGRAM 676#ifndef OPENSSL_NO_DGRAM
686BIO_METHOD *BIO_s_datagram(void); 677BIO_METHOD *BIO_s_datagram(void);
diff --git a/src/lib/libssl/src/crypto/bio/bio_cb.c b/src/lib/libssl/src/crypto/bio/bio_cb.c
index 00f41b1de1..a272bf969a 100644
--- a/src/lib/libssl/src/crypto/bio/bio_cb.c
+++ b/src/lib/libssl/src/crypto/bio/bio_cb.c
@@ -139,7 +139,7 @@ BIO_debug_callback(BIO *bio, int cmd, const char *argp, int argi, long argl,
139 b = (BIO *)bio->cb_arg; 139 b = (BIO *)bio->cb_arg;
140 if (b != NULL) 140 if (b != NULL)
141 BIO_write(b, buf, strlen(buf)); 141 BIO_write(b, buf, strlen(buf));
142#if !defined(OPENSSL_NO_STDIO) && !defined(OPENSSL_SYS_WIN16) 142#if !defined(OPENSSL_NO_STDIO)
143 else 143 else
144 fputs(buf, stderr); 144 fputs(buf, stderr);
145#endif 145#endif
diff --git a/src/lib/libssl/src/crypto/bio/bio_lcl.h b/src/lib/libssl/src/crypto/bio/bio_lcl.h
index e7f7ec8d8b..cc89c1bf2d 100644
--- a/src/lib/libssl/src/crypto/bio/bio_lcl.h
+++ b/src/lib/libssl/src/crypto/bio/bio_lcl.h
@@ -18,14 +18,6 @@
18#define UP_ftell ftell 18#define UP_ftell ftell
19#define UP_fflush fflush 19#define UP_fflush fflush
20#define UP_ferror ferror 20#define UP_ferror ferror
21#ifdef _WIN32
22#define UP_fileno _fileno
23#define UP_open _open
24#define UP_read _read
25#define UP_write _write
26#define UP_lseek _lseek
27#define UP_close _close
28#else
29#define UP_fileno fileno 21#define UP_fileno fileno
30#define UP_open open 22#define UP_open open
31#define UP_read read 23#define UP_read read
@@ -33,4 +25,3 @@
33#define UP_lseek lseek 25#define UP_lseek lseek
34#define UP_close close 26#define UP_close close
35#endif 27#endif
36#endif
diff --git a/src/lib/libssl/src/crypto/bio/bss_acpt.c b/src/lib/libssl/src/crypto/bio/bss_acpt.c
index d772515d64..d7c151eaaa 100644
--- a/src/lib/libssl/src/crypto/bio/bss_acpt.c
+++ b/src/lib/libssl/src/crypto/bio/bss_acpt.c
@@ -64,16 +64,7 @@
64 64
65#ifndef OPENSSL_NO_SOCK 65#ifndef OPENSSL_NO_SOCK
66 66
67#ifdef OPENSSL_SYS_WIN16
68#define SOCKET_PROTOCOL 0 /* more microsoft stupidity */
69#else
70#define SOCKET_PROTOCOL IPPROTO_TCP 67#define SOCKET_PROTOCOL IPPROTO_TCP
71#endif
72
73#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000)
74/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */
75#undef FIONBIO
76#endif
77 68
78typedef struct bio_accept_st { 69typedef struct bio_accept_st {
79 int state; 70 int state;
diff --git a/src/lib/libssl/src/crypto/bio/bss_conn.c b/src/lib/libssl/src/crypto/bio/bss_conn.c
index df34c49a4a..db877b140b 100644
--- a/src/lib/libssl/src/crypto/bio/bss_conn.c
+++ b/src/lib/libssl/src/crypto/bio/bss_conn.c
@@ -64,17 +64,7 @@
64 64
65#ifndef OPENSSL_NO_SOCK 65#ifndef OPENSSL_NO_SOCK
66 66
67#ifdef OPENSSL_SYS_WIN16
68#define SOCKET_PROTOCOL 0 /* more microsoft stupidity */
69#else
70#define SOCKET_PROTOCOL IPPROTO_TCP 67#define SOCKET_PROTOCOL IPPROTO_TCP
71#endif
72
73#if (defined(OPENSSL_SYS_VMS) && __VMS_VER < 70000000)
74/* FIONBIO used as a switch to enable ioctl, and that isn't in VMS < 7.0 */
75#undef FIONBIO
76#endif
77
78 68
79typedef struct bio_connect_st { 69typedef struct bio_connect_st {
80 int state; 70 int state;
diff --git a/src/lib/libssl/src/crypto/bio/bss_dgram.c b/src/lib/libssl/src/crypto/bio/bss_dgram.c
index 9219fffc8d..478c765399 100644
--- a/src/lib/libssl/src/crypto/bio/bss_dgram.c
+++ b/src/lib/libssl/src/crypto/bio/bss_dgram.c
@@ -66,10 +66,6 @@
66#include <openssl/bio.h> 66#include <openssl/bio.h>
67#ifndef OPENSSL_NO_DGRAM 67#ifndef OPENSSL_NO_DGRAM
68 68
69#if defined(OPENSSL_SYS_WIN32) || defined(OPENSSL_SYS_VMS)
70#include <sys/timeb.h>
71#endif
72
73#ifndef OPENSSL_NO_SCTP 69#ifndef OPENSSL_NO_SCTP
74#include <netinet/sctp.h> 70#include <netinet/sctp.h>
75#include <fcntl.h> 71#include <fcntl.h>
@@ -91,12 +87,6 @@
91 ((a)->s6_addr32[2] == htonl(0x0000ffff))) 87 ((a)->s6_addr32[2] == htonl(0x0000ffff)))
92#endif 88#endif
93 89
94#ifdef WATT32
95#define sock_write SockWrite /* Watt-32 uses same names */
96#define sock_read SockRead
97#define sock_puts SockPuts
98#endif
99
100static int dgram_write(BIO *h, const char *buf, int num); 90static int dgram_write(BIO *h, const char *buf, int num);
101static int dgram_read(BIO *h, char *buf, int size); 91static int dgram_read(BIO *h, char *buf, int size);
102static int dgram_puts(BIO *h, const char *str); 92static int dgram_puts(BIO *h, const char *str);
diff --git a/src/lib/libssl/src/crypto/bio/bss_file.c b/src/lib/libssl/src/crypto/bio/bss_file.c
index 982317b34a..59e48e6659 100644
--- a/src/lib/libssl/src/crypto/bio/bss_file.c
+++ b/src/lib/libssl/src/crypto/bio/bss_file.c
@@ -89,10 +89,6 @@
89#include "bio_lcl.h" 89#include "bio_lcl.h"
90#include <openssl/err.h> 90#include <openssl/err.h>
91 91
92#if defined(OPENSSL_SYS_NETWARE) && defined(NETWARE_CLIB)
93#include <nwfileio.h>
94#endif
95
96#if !defined(OPENSSL_NO_STDIO) 92#if !defined(OPENSSL_NO_STDIO)
97 93
98static int file_write(BIO *h, const char *buf, int num); 94static int file_write(BIO *h, const char *buf, int num);
@@ -122,46 +118,8 @@ BIO
122 BIO *ret; 118 BIO *ret;
123 FILE *file = NULL; 119 FILE *file = NULL;
124 120
125#if defined(_WIN32) && defined(CP_UTF8)
126 int sz, len_0 = (int)strlen(filename) + 1;
127 DWORD flags;
128
129 /*
130 * Basically there are three cases to cover: a) filename is
131 * pure ASCII string; b) actual UTF-8 encoded string and
132 * c) locale-ized string, i.e. one containing 8-bit
133 * characters that are meaningful in current system locale.
134 * If filename is pure ASCII or real UTF-8 encoded string,
135 * MultiByteToWideChar succeeds and _wfopen works. If
136 * filename is locale-ized string, chances are that
137 * MultiByteToWideChar fails reporting
138 * ERROR_NO_UNICODE_TRANSLATION, in which case we fall
139 * back to fopen...
140 */
141 if ((sz = MultiByteToWideChar(CP_UTF8,(flags = MB_ERR_INVALID_CHARS),
142 filename, len_0, NULL, 0)) > 0 ||
143 (GetLastError() == ERROR_INVALID_FLAGS &&
144 (sz = MultiByteToWideChar(CP_UTF8,(flags = 0),
145 filename, len_0, NULL, 0)) > 0)) {
146 WCHAR wmode[8];
147 WCHAR *wfilename = _alloca(sz*sizeof(WCHAR));
148
149 if (MultiByteToWideChar(CP_UTF8, flags, filename, len_0,
150 wfilename, sz) && MultiByteToWideChar(CP_UTF8, 0, mode,
151 strlen(mode) + 1, wmode,
152 sizeof(wmode) / sizeof(wmode[0])) &&
153 (file = _wfopen(wfilename, wmode)) == NULL &&
154 (errno == ENOENT || errno == EBADF)
155 ) /* UTF - 8 decode succeeded, but no file, filename
156 * could still have been locale-ized... */
157 file = fopen(filename, mode);
158 } else if (GetLastError() == ERROR_NO_UNICODE_TRANSLATION) {
159 file = fopen(filename, mode);
160 }
161#else
162 file = fopen(filename, mode); 121 file = fopen(filename, mode);
163 122
164#endif
165 if (file == NULL) { 123 if (file == NULL) {
166 SYSerr(SYS_F_FOPEN, errno); 124 SYSerr(SYS_F_FOPEN, errno);
167 ERR_add_error_data(5, "fopen('", filename, "', '", mode, "')"); 125 ERR_add_error_data(5, "fopen('", filename, "', '", mode, "')");
@@ -304,9 +262,6 @@ file_ctrl(BIO *b, int cmd, long num, void *ptr)
304 b->ptr = ptr; 262 b->ptr = ptr;
305 b->init = 1; 263 b->init = 1;
306#if BIO_FLAGS_UPLINK!=0 264#if BIO_FLAGS_UPLINK!=0
307#if defined(__MINGW32__) && defined(__MSVCRT__) && !defined(_IOB_ENTRIES)
308#define _IOB_ENTRIES 20
309#endif
310#if defined(_IOB_ENTRIES) 265#if defined(_IOB_ENTRIES)
311 /* Safety net to catch purely internal BIO_set_fp calls */ 266 /* Safety net to catch purely internal BIO_set_fp calls */
312 if ((size_t)ptr >= (size_t)stdin && 267 if ((size_t)ptr >= (size_t)stdin &&
@@ -317,37 +272,7 @@ file_ctrl(BIO *b, int cmd, long num, void *ptr)
317#ifdef UP_fsetmod 272#ifdef UP_fsetmod
318 if (b->flags&BIO_FLAGS_UPLINK) 273 if (b->flags&BIO_FLAGS_UPLINK)
319 UP_fsetmod(b->ptr,(char)((num&BIO_FP_TEXT)?'t':'b')); 274 UP_fsetmod(b->ptr,(char)((num&BIO_FP_TEXT)?'t':'b'));
320 else
321#endif 275#endif
322 {
323#if defined(OPENSSL_SYS_NETWARE) && defined(NETWARE_CLIB)
324 int fd = fileno((FILE*)ptr);
325 /* Under CLib there are differences in file modes */
326 if (num & BIO_FP_TEXT)
327 setmode(fd, O_TEXT);
328 else
329 setmode(fd, O_BINARY);
330#elif defined(OPENSSL_SYS_MSDOS)
331 int fd = fileno((FILE*)ptr);
332 /* Set correct text/binary mode */
333 if (num & BIO_FP_TEXT)
334 _setmode(fd, _O_TEXT);
335 /* Dangerous to set stdin/stdout to raw (unless redirected) */
336 else {
337 if (fd == STDIN_FILENO || fd == STDOUT_FILENO) {
338 if (isatty(fd) <= 0)
339 _setmode(fd, _O_BINARY);
340 } else
341 _setmode(fd, _O_BINARY);
342 }
343#elif defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_WIN32_CYGWIN)
344 int fd = fileno((FILE*)ptr);
345 if (num & BIO_FP_TEXT)
346 setmode(fd, O_TEXT);
347 else
348 setmode(fd, O_BINARY);
349#endif
350 }
351 break; 276 break;
352 case BIO_C_SET_FILENAME: 277 case BIO_C_SET_FILENAME:
353 file_free(b); 278 file_free(b);
@@ -367,18 +292,6 @@ file_ctrl(BIO *b, int cmd, long num, void *ptr)
367 ret = 0; 292 ret = 0;
368 break; 293 break;
369 } 294 }
370#if defined(OPENSSL_SYS_MSDOS) || defined(OPENSSL_SYS_WINDOWS) || defined(OPENSSL_SYS_OS2) || defined(OPENSSL_SYS_WIN32_CYGWIN)
371 if (!(num & BIO_FP_TEXT))
372 strcat(p, "b");
373 else
374 strcat(p, "t");
375#endif
376#if defined(OPENSSL_SYS_NETWARE)
377 if (!(num & BIO_FP_TEXT))
378 strcat(p, "b");
379 else
380 strcat(p, "t");
381#endif
382 fp = fopen(ptr, p); 295 fp = fopen(ptr, p);
383 if (fp == NULL) { 296 if (fp == NULL) {
384 SYSerr(SYS_F_FOPEN, errno); 297 SYSerr(SYS_F_FOPEN, errno);
diff --git a/src/lib/libssl/src/crypto/bio/bss_log.c b/src/lib/libssl/src/crypto/bio/bss_log.c
index 9225af4df2..5a79f72673 100644
--- a/src/lib/libssl/src/crypto/bio/bss_log.c
+++ b/src/lib/libssl/src/crypto/bio/bss_log.c
@@ -68,59 +68,13 @@
68 68
69#include "cryptlib.h" 69#include "cryptlib.h"
70 70
71#if defined(OPENSSL_SYS_WINCE) 71#include <syslog.h>
72#elif defined(OPENSSL_SYS_WIN32)
73#elif defined(OPENSSL_SYS_VMS)
74# include <opcdef.h>
75# include <descrip.h>
76# include <lib$routines.h>
77# include <starlet.h>
78/* Some compiler options may mask the declaration of "_malloc32". */
79# if __INITIAL_POINTER_SIZE && defined _ANSI_C_SOURCE
80# if __INITIAL_POINTER_SIZE == 64
81# pragma pointer_size save
82# pragma pointer_size 32
83void * _malloc32 (__size_t);
84# pragma pointer_size restore
85# endif /* __INITIAL_POINTER_SIZE == 64 */
86# endif /* __INITIAL_POINTER_SIZE && defined _ANSI_C_SOURCE */
87#elif defined(__ultrix)
88# include <sys/syslog.h>
89#elif defined(OPENSSL_SYS_NETWARE)
90# define NO_SYSLOG
91#elif (!defined(MSDOS) || defined(WATT32)) && !defined(OPENSSL_SYS_VXWORKS) && !defined(NO_SYSLOG)
92# include <syslog.h>
93#endif
94 72
95#include <openssl/buffer.h> 73#include <openssl/buffer.h>
96#include <openssl/err.h> 74#include <openssl/err.h>
97 75
98#ifndef NO_SYSLOG 76#ifndef NO_SYSLOG
99 77
100#if defined(OPENSSL_SYS_WIN32)
101#define LOG_EMERG 0
102#define LOG_ALERT 1
103#define LOG_CRIT 2
104#define LOG_ERR 3
105#define LOG_WARNING 4
106#define LOG_NOTICE 5
107#define LOG_INFO 6
108#define LOG_DEBUG 7
109
110#define LOG_DAEMON (3<<3)
111#elif defined(OPENSSL_SYS_VMS)
112/* On VMS, we don't really care about these, but we need them to compile */
113#define LOG_EMERG 0
114#define LOG_ALERT 1
115#define LOG_CRIT 2
116#define LOG_ERR 3
117#define LOG_WARNING 4
118#define LOG_NOTICE 5
119#define LOG_INFO 6
120#define LOG_DEBUG 7
121
122#define LOG_DAEMON OPC$M_NM_NTWORK
123#endif
124 78
125static int slg_write(BIO *h, const char *buf, int num); 79static int slg_write(BIO *h, const char *buf, int num);
126static int slg_puts(BIO *h, const char *str); 80static int slg_puts(BIO *h, const char *str);
@@ -245,161 +199,11 @@ slg_puts(BIO *bp, const char *str)
245 return (ret); 199 return (ret);
246} 200}
247 201
248#if defined(OPENSSL_SYS_WIN32)
249
250static void
251xopenlog(BIO* bp, char* name, int level)
252{
253 if (check_winnt())
254 bp->ptr = RegisterEventSourceA(NULL, name);
255 else
256 bp->ptr = NULL;
257}
258
259static void
260xsyslog(BIO *bp, int priority, const char *string)
261{
262 LPCSTR lpszStrings[2];
263 WORD evtype = EVENTLOG_ERROR_TYPE;
264 char pidbuf[DECIMAL_SIZE(DWORD) + 4];
265
266 if (bp->ptr == NULL)
267 return;
268
269 switch (priority) {
270 case LOG_EMERG:
271 case LOG_ALERT:
272 case LOG_CRIT:
273 case LOG_ERR:
274 evtype = EVENTLOG_ERROR_TYPE;
275 break;
276 case LOG_WARNING:
277 evtype = EVENTLOG_WARNING_TYPE;
278 break;
279 case LOG_NOTICE:
280 case LOG_INFO:
281 case LOG_DEBUG:
282 evtype = EVENTLOG_INFORMATION_TYPE;
283 break;
284 default: /* Should never happen, but set it
285 as error anyway. */
286 evtype = EVENTLOG_ERROR_TYPE;
287 break;
288 }
289
290 sprintf(pidbuf, "[%u] ", GetCurrentProcessId());
291 lpszStrings[0] = pidbuf;
292 lpszStrings[1] = string;
293
294 ReportEventA(bp->ptr, evtype, 0, 1024, NULL, 2, 0,
295 lpszStrings, NULL);
296}
297
298static void
299xcloselog(BIO* bp)
300{
301 if (bp->ptr)
302 DeregisterEventSource((HANDLE)(bp->ptr));
303 bp->ptr = NULL;
304}
305
306#elif defined(OPENSSL_SYS_VMS)
307
308static int VMS_OPC_target = LOG_DAEMON;
309
310static void
311xopenlog(BIO* bp, char* name, int level)
312{
313 VMS_OPC_target = level;
314
315}
316
317static void
318xsyslog(BIO *bp, int priority, const char *string)
319{
320 struct dsc$descriptor_s opc_dsc;
321
322/* Arrange 32-bit pointer to opcdef buffer and malloc(), if needed. */
323#if __INITIAL_POINTER_SIZE == 64
324# pragma pointer_size save
325# pragma pointer_size 32
326# define OPCDEF_TYPE __char_ptr32
327# define OPCDEF_MALLOC _malloc32
328#else /* __INITIAL_POINTER_SIZE == 64 */
329# define OPCDEF_TYPE char *
330# define OPCDEF_MALLOC OPENSSL_malloc
331#endif /* __INITIAL_POINTER_SIZE == 64 [else] */
332
333 struct opcdef *opcdef_p;
334
335#if __INITIAL_POINTER_SIZE == 64
336# pragma pointer_size restore
337#endif /* __INITIAL_POINTER_SIZE == 64 */
338
339 char buf[10240];
340 unsigned int len;
341 struct dsc$descriptor_s buf_dsc;
342 $DESCRIPTOR(fao_cmd, "!AZ: !AZ");
343 char *priority_tag;
344
345 switch (priority) {
346 case LOG_EMERG:
347 priority_tag = "Emergency"; break;
348 case LOG_ALERT:
349 priority_tag = "Alert"; break;
350 case LOG_CRIT:
351 priority_tag = "Critical"; break;
352 case LOG_ERR:
353 priority_tag = "Error"; break;
354 case LOG_WARNING:
355 priority_tag = "Warning"; break;
356 case LOG_NOTICE:
357 priority_tag = "Notice"; break;
358 case LOG_INFO:
359 priority_tag = "Info"; break;
360 case LOG_DEBUG:
361 priority_tag = "DEBUG"; break;
362 }
363
364 buf_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
365 buf_dsc.dsc$b_class = DSC$K_CLASS_S;
366 buf_dsc.dsc$a_pointer = buf;
367 buf_dsc.dsc$w_length = sizeof(buf) - 1;
368
369 lib$sys_fao(&fao_cmd, &len, &buf_dsc, priority_tag, string);
370
371 /* We know there's an 8-byte header. That's documented. */
372 opcdef_p = OPCDEF_MALLOC( 8 + len);
373 opcdef_p->opc$b_ms_type = OPC$_RQ_RQST;
374 memcpy(opcdef_p->opc$z_ms_target_classes, &VMS_OPC_target, 3);
375 opcdef_p->opc$l_ms_rqstid = 0;
376 memcpy(&opcdef_p->opc$l_ms_text, buf, len);
377
378 opc_dsc.dsc$b_dtype = DSC$K_DTYPE_T;
379 opc_dsc.dsc$b_class = DSC$K_CLASS_S;
380 opc_dsc.dsc$a_pointer = (OPCDEF_TYPE) opcdef_p;
381 opc_dsc.dsc$w_length = len + 8;
382
383 sys$sndopr(opc_dsc, 0);
384
385 OPENSSL_free(opcdef_p);
386}
387
388static void
389xcloselog(BIO* bp)
390{
391}
392
393#else /* Unix/Watt32 */
394 202
395static void 203static void
396xopenlog(BIO* bp, char* name, int level) 204xopenlog(BIO* bp, char* name, int level)
397{ 205{
398#ifdef WATT32 /* djgpp/DOS */
399 openlog(name, LOG_PID|LOG_CONS|LOG_NDELAY, level);
400#else
401 openlog(name, LOG_PID|LOG_CONS, level); 206 openlog(name, LOG_PID|LOG_CONS, level);
402#endif
403} 207}
404 208
405static void 209static void
@@ -414,6 +218,5 @@ xcloselog(BIO* bp)
414 closelog(); 218 closelog();
415} 219}
416 220
417#endif /* Unix */
418 221
419#endif /* NO_SYSLOG */ 222#endif /* NO_SYSLOG */
diff --git a/src/lib/libssl/src/crypto/bio/bss_sock.c b/src/lib/libssl/src/crypto/bio/bss_sock.c
index c05b8d37f1..b9cf817a0c 100644
--- a/src/lib/libssl/src/crypto/bio/bss_sock.c
+++ b/src/lib/libssl/src/crypto/bio/bss_sock.c
@@ -65,12 +65,6 @@
65 65
66#include <openssl/bio.h> 66#include <openssl/bio.h>
67 67
68#ifdef WATT32
69#define sock_write SockWrite /* Watt-32 uses same names */
70#define sock_read SockRead
71#define sock_puts SockPuts
72#endif
73
74static int sock_write(BIO *h, const char *buf, int num); 68static int sock_write(BIO *h, const char *buf, int num);
75static int sock_read(BIO *h, char *buf, int size); 69static int sock_read(BIO *h, char *buf, int size);
76static int sock_puts(BIO *h, const char *str); 70static int sock_puts(BIO *h, const char *str);