Restore the test coverage of COMP_rle and SSL_COMP_add_compression_method
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Sat, 11 Feb 2017 07:53:24 +0000 (08:53 +0100)
committerRichard Levitte <levitte@openssl.org>
Fri, 24 Feb 2017 10:22:40 +0000 (11:22 +0100)
Reviewed-by: Rich Salz <rsalz@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2595)

crypto/comp/c_rle.c
ssl/ssl_ciph.c
test/Makefile

index e9aabbd166a2eca04ac14de28833d489be7f33d4..41919613eec5a3b8f3815a3587f28d7cfa727490 100644 (file)
@@ -31,12 +31,11 @@ static int rle_compress_block(COMP_CTX *ctx, unsigned char *out,
                               unsigned int olen, unsigned char *in,
                               unsigned int ilen)
 {
-    /* int i; */
+    if (ilen == 0)
+        return 0;
 
-    if (ilen == 0 || olen < (ilen - 1)) {
-        /* ZZZZZZZZZZZZZZZZZZZZZZ */
-        return (-1);
-    }
+    if (olen <= ilen)
+        return -1;
 
     *(out++) = 0;
     memcpy(out, in, ilen);
@@ -49,14 +48,16 @@ static int rle_expand_block(COMP_CTX *ctx, unsigned char *out,
 {
     int i;
 
-    if (olen < (ilen - 1)) {
-        /* ZZZZZZZZZZZZZZZZZZZZZZ */
-        return (-1);
-    }
+    if (ilen == 0)
+        return 0;
+
+    if (olen < (ilen - 1))
+        return -1;
 
     i = *(in++);
-    if (i == 0) {
-        memcpy(out, in, ilen - 1);
-    }
+    if (i != 0)
+        return -1;
+
+    memcpy(out, in, ilen - 1);
     return (ilen - 1);
 }
index 92b022b7cb98f561d441f5271367bc2e6833523d..40021329a9361713a7d4ef6575151cb50660f6da 100644 (file)
@@ -2013,6 +2013,7 @@ int SSL_COMP_add_compression_method(int id, COMP_METHOD *cm)
     }
     comp->id = id;
     comp->method = cm;
+    comp->name = cm->name;
     load_builtin_compressions();
     if (ssl_comp_methods && sk_SSL_COMP_find(ssl_comp_methods, comp) >= 0) {
         OPENSSL_free(comp);
index 8f272ef99d5ee28575d0792df9af8f670f324e32..a324eeb39ac317a053e89c3daf4dae564ced9eb2 100644 (file)
@@ -307,6 +307,7 @@ test_ssl: keyU.ss certU.ss certCA.ss certP1.ss keyP1.ss certP2.ss keyP2.ss \
        fi
        ../util/shlib_wrap.sh ./$(SSLTEST) -test_cipherlist
        @sh ./testssl keyU.ss certU.ss certCA.ss
+       @sh ./testssl keyU.ss certU.ss certCA.ss -rle
        @sh ./testsslproxy keyP1.ss certP1.ss intP1.ss
        @sh ./testsslproxy keyP2.ss certP2.ss intP2.ss