ok?

Index: crypto/cryptosoft.c
===================================================================
RCS file: /cvs/src/sys/crypto/cryptosoft.c,v
retrieving revision 1.84
diff -u -p -r1.84 cryptosoft.c
--- crypto/cryptosoft.c 31 May 2018 19:40:58 -0000      1.84
+++ crypto/cryptosoft.c 29 Nov 2018 19:05:36 -0000
@@ -688,7 +688,7 @@ swcr_compdec(struct cryptodesc *crd, str
        if (crd->crd_flags & CRD_F_COMP) {
                if (result > crd->crd_len) {
                        /* Compression was useless, we lost time */
-                       free(out, M_CRYPTO_DATA, 0);
+                       free(out, M_CRYPTO_DATA, result);
                        return 0;
                }
        }
@@ -719,7 +719,7 @@ swcr_compdec(struct cryptodesc *crd, str
                        }
                }
        }
-       free(out, M_CRYPTO_DATA, 0);
+       free(out, M_CRYPTO_DATA, result);
        return 0;
 }
 
Index: crypto/xform_ipcomp.c
===================================================================
RCS file: /cvs/src/sys/crypto/xform_ipcomp.c,v
retrieving revision 1.7
diff -u -p -r1.7 xform_ipcomp.c
--- crypto/xform_ipcomp.c       16 Mar 2015 20:26:24 -0000      1.7
+++ crypto/xform_ipcomp.c       29 Nov 2018 19:07:26 -0000
@@ -141,13 +141,13 @@ deflate_global(u_int8_t *data, u_int32_t
                if (count > buf[j].size) {
                        bcopy(buf[j].out, *out, buf[j].size);
                        *out += buf[j].size;
-                       free(buf[j].out, M_CRYPTO_DATA, 0);
+                       free(buf[j].out, M_CRYPTO_DATA, buf[j].size);
                        count -= buf[j].size;
                } else {
                        /* it should be the last buffer */
                        bcopy(buf[j].out, *out, count);
                        *out += count;
-                       free(buf[j].out, M_CRYPTO_DATA, 0);
+                       free(buf[j].out, M_CRYPTO_DATA, buf[j].size);
                        count = 0;
                }
        }
@@ -157,7 +157,7 @@ deflate_global(u_int8_t *data, u_int32_t
 bad:
        *out = NULL;
        for (j = 0; buf[j].flag != 0; j++)
-               free(buf[j].out, M_CRYPTO_DATA, 0);
+               free(buf[j].out, M_CRYPTO_DATA, buf[j].size);
        if (decomp)
                inflateEnd(&zbuf);
        else

Reply via email to