cryptosoft - Fix useless compression detection
authorAlex Hornung <ahornung@gmail.com>
Sat, 21 Aug 2010 06:49:27 +0000 (07:49 +0100)
committerAlex Hornung <ahornung@gmail.com>
Sat, 21 Aug 2010 06:49:27 +0000 (07:49 +0100)
* If the result of the compression has the same size as the input, it's
  also useless; not only when it's bigger.

* This seems to fix several issues with consumers that would send the
  data out without noting that compression was used.

Obtained-from: FreeBSD

sys/opencrypto/cryptosoft.c

index 673a08b..ece8766 100644 (file)
@@ -599,7 +599,7 @@ swcr_compdec(struct cryptodesc *crd, struct swcr_data *sw,
        sw->sw_size = result;
        /* Check the compressed size when doing compression */
        if (crd->crd_flags & CRD_F_COMP) {
-               if (result > crd->crd_len) {
+               if (result >= crd->crd_len) {
                        /* Compression was useless, we lost time */
                        kfree(out, M_CRYPTO_DATA);
                        return 0;