Browse code

Update openssl to 1.0.2o

Change-Id: Iec7d855f0235b471c2ada6c81f65bc854d40cd8c
Reviewed-on: http://photon-jenkins.eng.vmware.com:8082/4970
Tested-by: gerrit-photon <photon-checkins@vmware.com>
Reviewed-by: Alexey Makhalov <amakhalov@vmware.com>

suezzelur authored on 2018/04/04 06:58:00
Showing 3 changed files
... ...
@@ -1,6 +1,6 @@
1
-diff -up openssl-1.0.2a/apps/s_apps.h.ipv6-apps openssl-1.0.2a/apps/s_apps.h
2
-+++ openssl-1.0.2a/apps/s_apps.h	2015-04-20 15:05:00.353137701 +0200
1
+diff -rup openssl-1.0.2o/apps/s_apps.h openssl-1.0.2o-new/apps/s_apps.h
2
+--- openssl-1.0.2o/apps/s_apps.h	2018-03-27 06:54:46.000000000 -0700
3 3
 @@ -151,7 +151,7 @@ typedef fd_mask fd_set;
4 4
  #define PORT_STR        "4433"
5 5
  #define PROTOCOL        "tcp"
... ...
@@ -24,10 +24,10 @@ diff -up openssl-1.0.2a/apps/s_apps.h.ipv6-apps openssl-1.0.2a/apps/s_apps.h
24 24
  
25 25
  long MS_CALLBACK bio_dump_callback(BIO *bio, int cmd, const char *argp,
26 26
                                     int argi, long argl, long ret);
27
-diff -up openssl-1.0.2a/apps/s_client.c.ipv6-apps openssl-1.0.2a/apps/s_client.c
28
-+++ openssl-1.0.2a/apps/s_client.c	2015-04-20 15:06:42.338503234 +0200
29
-@@ -662,7 +662,7 @@ int MAIN(int argc, char **argv)
27
+diff -rup openssl-1.0.2o/apps/s_client.c openssl-1.0.2o-new/apps/s_client.c
28
+--- openssl-1.0.2o/apps/s_client.c	2018-03-27 06:54:46.000000000 -0700
29
+@@ -668,7 +668,7 @@ int MAIN(int argc, char **argv)
30 30
      int cbuf_len, cbuf_off;
31 31
      int sbuf_len, sbuf_off;
32 32
      fd_set readfds, writefds;
... ...
@@ -36,7 +36,7 @@ diff -up openssl-1.0.2a/apps/s_client.c.ipv6-apps openssl-1.0.2a/apps/s_client.c
36 36
      int full_log = 1;
37 37
      char *host = SSL_HOST_NAME;
38 38
      char *cert_file = NULL, *key_file = NULL, *chain_file = NULL;
39
-@@ -785,13 +785,11 @@ int MAIN(int argc, char **argv)
39
+@@ -792,13 +792,11 @@ int MAIN(int argc, char **argv)
40 40
          } else if (strcmp(*argv, "-port") == 0) {
41 41
              if (--argc < 1)
42 42
                  goto bad;
... ...
@@ -52,7 +52,7 @@ diff -up openssl-1.0.2a/apps/s_client.c.ipv6-apps openssl-1.0.2a/apps/s_client.c
52 52
                  goto bad;
53 53
          } else if (strcmp(*argv, "-verify") == 0) {
54 54
              verify = SSL_VERIFY_PEER;
55
-@@ -1417,7 +1415,7 @@ int MAIN(int argc, char **argv)
55
+@@ -1449,7 +1447,7 @@ int MAIN(int argc, char **argv)
56 56
  
57 57
   re_start:
58 58
  
... ...
@@ -61,10 +61,11 @@ diff -up openssl-1.0.2a/apps/s_client.c.ipv6-apps openssl-1.0.2a/apps/s_client.c
61 61
          BIO_printf(bio_err, "connect:errno=%d\n", get_last_socket_error());
62 62
          SHUTDOWN(s);
63 63
          goto end;
64
-diff -up openssl-1.0.2a/apps/s_server.c.ipv6-apps openssl-1.0.2a/apps/s_server.c
65
-+++ openssl-1.0.2a/apps/s_server.c	2015-04-20 15:10:47.245187746 +0200
66
-@@ -1061,7 +1061,7 @@ int MAIN(int argc, char *argv[])
64
+Only in openssl-1.0.2o-new/apps: s_client.c.orig
65
+diff -rup openssl-1.0.2o/apps/s_server.c openssl-1.0.2o-new/apps/s_server.c
66
+--- openssl-1.0.2o/apps/s_server.c	2018-03-27 06:54:46.000000000 -0700
67
+@@ -1082,7 +1082,7 @@ int MAIN(int argc, char *argv[])
67 68
  {
68 69
      X509_VERIFY_PARAM *vpm = NULL;
69 70
      int badarg = 0;
... ...
@@ -73,7 +74,7 @@ diff -up openssl-1.0.2a/apps/s_server.c.ipv6-apps openssl-1.0.2a/apps/s_server.c
73 73
      char *CApath = NULL, *CAfile = NULL;
74 74
      char *chCApath = NULL, *chCAfile = NULL;
75 75
      char *vfyCApath = NULL, *vfyCAfile = NULL;
76
-@@ -1148,7 +1148,8 @@ int MAIN(int argc, char *argv[])
76
+@@ -1170,7 +1170,8 @@ int MAIN(int argc, char *argv[])
77 77
          if ((strcmp(*argv, "-port") == 0) || (strcmp(*argv, "-accept") == 0)) {
78 78
              if (--argc < 1)
79 79
                  goto bad;
... ...
@@ -83,7 +84,7 @@ diff -up openssl-1.0.2a/apps/s_server.c.ipv6-apps openssl-1.0.2a/apps/s_server.c
83 83
                  goto bad;
84 84
          } else if (strcmp(*argv, "-naccept") == 0) {
85 85
              if (--argc < 1)
86
-@@ -2020,13 +2021,13 @@ int MAIN(int argc, char *argv[])
86
+@@ -2058,13 +2059,13 @@ int MAIN(int argc, char *argv[])
87 87
      BIO_printf(bio_s_out, "ACCEPT\n");
88 88
      (void)BIO_flush(bio_s_out);
89 89
      if (rev)
... ...
@@ -100,9 +101,10 @@ diff -up openssl-1.0.2a/apps/s_server.c.ipv6-apps openssl-1.0.2a/apps/s_server.c
100 100
                    naccept);
101 101
      print_stats(bio_s_out, ctx);
102 102
      ret = 0;
103
-diff -up openssl-1.0.2a/apps/s_socket.c.ipv6-apps openssl-1.0.2a/apps/s_socket.c
104
-+++ openssl-1.0.2a/apps/s_socket.c	2015-04-20 15:32:53.960079507 +0200
103
+Only in openssl-1.0.2o-new/apps: s_server.c.orig
104
+diff -rup openssl-1.0.2o/apps/s_socket.c openssl-1.0.2o-new/apps/s_socket.c
105
+--- openssl-1.0.2o/apps/s_socket.c	2018-03-27 06:54:46.000000000 -0700
105 106
 @@ -106,9 +106,7 @@ static struct hostent *GetHostByName(cha
106 107
  static void ssl_sock_cleanup(void);
107 108
  # endif
... ...
@@ -114,7 +116,7 @@ diff -up openssl-1.0.2a/apps/s_socket.c.ipv6-apps openssl-1.0.2a/apps/s_socket.c
114 114
  static int do_accept(int acc_sock, int *sock, char **host);
115 115
  static int host_ip(char *str, unsigned char ip[4]);
116 116
  
117
-@@ -231,65 +229,66 @@ static int ssl_sock_init(void)
117
+@@ -231,65 +229,67 @@ static int ssl_sock_init(void)
118 118
      return (1);
119 119
  }
120 120
  
... ...
@@ -123,7 +125,7 @@ diff -up openssl-1.0.2a/apps/s_socket.c.ipv6-apps openssl-1.0.2a/apps/s_socket.c
123 123
  {
124 124
 -    unsigned char ip[4];
125 125
 -
126
--    memset(ip, '\0', sizeof ip);
126
+-    memset(ip, '\0', sizeof(ip));
127 127
 -    if (!host_ip(host, &(ip[0])))
128 128
 -        return 0;
129 129
 -    return init_client_ip(sock, ip, port, type);
... ...
@@ -177,6 +179,7 @@ diff -up openssl-1.0.2a/apps/s_socket.c.ipv6-apps openssl-1.0.2a/apps/s_socket.c
177 177
 +            failed_call = "socket";
178 178
 +            goto nextres;
179 179
 +        }
180
++
180 181
  # if defined(SO_KEEPALIVE) && !defined(OPENSSL_SYS_MPE)
181 182
 -    if (type == SOCK_STREAM) {
182 183
 -        i = 0;
... ...
@@ -227,7 +230,7 @@ diff -up openssl-1.0.2a/apps/s_socket.c.ipv6-apps openssl-1.0.2a/apps/s_socket.c
227 227
                int (*cb) (char *hostname, int s, int stype,
228 228
                           unsigned char *context), unsigned char *context,
229 229
                int naccept)
230
-@@ -328,69 +327,89 @@ int do_server(int port, int type, int *r
230
+@@ -328,69 +328,88 @@ int do_server(int port, int type, int *r
231 231
      }
232 232
  }
233 233
  
... ...
@@ -295,7 +298,7 @@ diff -up openssl-1.0.2a/apps/s_socket.c.ipv6-apps openssl-1.0.2a/apps/s_socket.c
295 295
  # if defined SOL_SOCKET && defined SO_REUSEADDR
296 296
 -    {
297 297
 -        int j = 1;
298
--        setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void *)&j, sizeof j);
298
+-        setsockopt(s, SOL_SOCKET, SO_REUSEADDR, (void *)&j, sizeof(j));
299 299
 -    }
300 300
 -# endif
301 301
 -    if (bind(s, (struct sockaddr *)&server, sizeof(server)) == -1) {
... ...
@@ -307,6 +310,15 @@ diff -up openssl-1.0.2a/apps/s_socket.c.ipv6-apps openssl-1.0.2a/apps/s_socket.c
307 307
 +        }
308 308
  # endif
309 309
 -        goto err;
310
+-    }
311
+-    /* Make it 128 for linux */
312
+-    if (type == SOCK_STREAM && listen(s, 128) == -1)
313
+-        goto err;
314
+-    *sock = s;
315
+-    ret = 1;
316
+- err:
317
+-    if ((ret == 0) && (s != -1)) {
318
+-        SHUTDOWN(s);
310 319
 +
311 320
 +        if (bind(s, (struct sockaddr *)res->ai_addr, res->ai_addrlen) == -1) {
312 321
 +            failed_call = "bind";
... ...
@@ -325,17 +337,14 @@ diff -up openssl-1.0.2a/apps/s_socket.c.ipv6-apps openssl-1.0.2a/apps/s_socket.c
325 325
 +            close(s);
326 326
 +        res = res->ai_next;
327 327
      }
328
--    /* Make it 128 for linux */
329
--    if (type == SOCK_STREAM && listen(s, 128) == -1)
330
--        goto err;
331
--    *sock = s;
332
--    ret = 1;
333
-- err:
334
--    if ((ret == 0) && (s != -1)) {
335
--        SHUTDOWN(s);
328
+-    return (ret);
329
+-}
336 330
 +    if (res0)
337 331
 +        freeaddrinfo(res0);
338
-+
332
+ 
333
+-static int init_server(int *sock, int port, int type)
334
+-{
335
+-    return (init_server_long(sock, port, NULL, type));
339 336
 +    if (s == INVALID_SOCKET) {
340 337
 +        if (hints.ai_family == AF_INET6) {
341 338
 +            hints.ai_family = AF_INET;
... ...
@@ -343,13 +352,7 @@ diff -up openssl-1.0.2a/apps/s_socket.c.ipv6-apps openssl-1.0.2a/apps/s_socket.c
343 343
 +        }
344 344
 +        perror("socket");
345 345
 +        return (0);
346
-     }
347
--    return (ret);
348
--}
349
- 
350
--static int init_server(int *sock, int port, int type)
351
--{
352
--    return (init_server_long(sock, port, NULL, type));
346
++    }
353 347
 +    perror(failed_call);
354 348
 +    return (0);
355 349
  }
... ...
@@ -523,4 +526,3 @@ diff -up openssl-1.0.2a/apps/s_socket.c.ipv6-apps openssl-1.0.2a/apps/s_socket.c
523 523
      return (1);
524 524
  }
525 525
  
526
-
... ...
@@ -1,14 +1,17 @@
1
-diff -rup openssl-1.0.2k/crypto/o_init.c openssl-1.0.2k-new/crypto/o_init.c
2
-+++ openssl-1.0.2k-new/crypto/o_init.c	2017-07-27 17:18:49.016782797 -0700
3
-@@ -57,10 +57,57 @@
1
+diff -rup openssl-1.0.2o/crypto/o_init.c openssl-1.0.2o-new/crypto/o_init.c
2
+--- openssl-1.0.2o/crypto/o_init.c	2018-03-27 06:54:46.000000000 -0700
3
+@@ -57,6 +57,7 @@
4 4
  #include <openssl/err.h>
5 5
  #ifdef OPENSSL_FIPS
6 6
  # include <openssl/fips.h>
7 7
 +# include <openssl/fips_rand.h>
8 8
  # include <openssl/rand.h>
9
+ 
10
+ # ifndef OPENSSL_NO_DEPRECATED
11
+@@ -66,6 +67,52 @@ void FIPS_crypto_set_id_callback(unsigne
9 12
  #endif
10
-
13
+ 
11 14
  /*
12 15
 + *
13 16
 + * Enable FIPS mode based on host FIPS mode / env variable.
... ...
@@ -59,7 +62,7 @@ diff -rup openssl-1.0.2k/crypto/o_init.c openssl-1.0.2k-new/crypto/o_init.c
59 59
   * Perform any essential OpenSSL initialization operations. Currently only
60 60
   * sets FIPS callbacks
61 61
   */
62
-@@ -79,6 +126,17 @@ void OPENSSL_init(void)
62
+@@ -84,6 +131,17 @@ void OPENSSL_init(void)
63 63
      FIPS_set_error_callbacks(ERR_put_error, ERR_add_error_vdata);
64 64
      FIPS_set_malloc_callbacks(CRYPTO_malloc, CRYPTO_free);
65 65
      RAND_init_fips();
... ...
@@ -1,14 +1,14 @@
1 1
 Summary:        Management tools and libraries relating to cryptography
2 2
 Name:           openssl
3
-Version:        1.0.2n
4
-Release:        2%{?dist}
3
+Version:        1.0.2o
4
+Release:        1%{?dist}
5 5
 License:        OpenSSL
6 6
 URL:            http://www.openssl.org
7 7
 Group:          System Environment/Security
8 8
 Vendor:         VMware, Inc.
9 9
 Distribution:   Photon
10 10
 Source0:        http://www.openssl.org/source/%{name}-%{version}.tar.gz
11
-%define sha1    openssl=0ca2957869206de193603eca6d89f532f61680b1
11
+%define sha1    openssl=a47faaca57b47a0d9d5fb085545857cc92062691
12 12
 Source1:        rehash_ca_certificates.sh
13 13
 Patch0:         c_rehash.patch
14 14
 Patch1:         openssl-1.0.2n-ipv6apps.patch
... ...
@@ -118,6 +118,8 @@ rm -rf %{buildroot}/*
118 118
 /%{_bindir}/rehash_ca_certificates.sh
119 119
 
120 120
 %changelog
121
+*   Tue Apr 03 2018 Anish Swaminathan <anishs@vmware.com> 1.0.2o-1
122
+-   Upgrade to 1.0.2o- Fixes CVE-2017-3738, CVE-2018-0733, CVE-2018-0739
121 123
 *   Wed Mar 21 2018 Dheeraj Shetty <dheerajs@vmware.com> 1.0.2n-2
122 124
 -   Add script which rehashes the certificates
123 125
 *   Tue Jan 02 2018 Xiaolin Li <xiaolinl@vmware.com> 1.0.2n-1