Skip to content

Commit 41162dd

Browse files
committed
crypto: use consistent error reporting pattern for unsupported cipher modes
Not all paths in qcrypto_cipher_ctx_new() were correctly distinguishing between valid user input for cipher mode (which should report a user facing error), vs program logic errors (which should assert). Reported-by: Peter Maydell <[email protected]> Signed-off-by: Daniel P. Berrangé <[email protected]>
1 parent 586ac2c commit 41162dd

File tree

1 file changed

+14
-4
lines changed

1 file changed

+14
-4
lines changed

crypto/cipher-nettle.c.inc

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -525,8 +525,10 @@ static QCryptoCipher *qcrypto_cipher_ctx_new(QCryptoCipherAlgorithm alg,
525525
case QCRYPTO_CIPHER_MODE_CTR:
526526
drv = &qcrypto_nettle_des_driver_ctr;
527527
break;
528-
default:
528+
case QCRYPTO_CIPHER_MODE_XTS:
529529
goto bad_cipher_mode;
530+
default:
531+
g_assert_not_reached();
530532
}
531533

532534
ctx = g_new0(QCryptoNettleDES, 1);
@@ -551,8 +553,10 @@ static QCryptoCipher *qcrypto_cipher_ctx_new(QCryptoCipherAlgorithm alg,
551553
case QCRYPTO_CIPHER_MODE_CTR:
552554
drv = &qcrypto_nettle_des3_driver_ctr;
553555
break;
554-
default:
556+
case QCRYPTO_CIPHER_MODE_XTS:
555557
goto bad_cipher_mode;
558+
default:
559+
g_assert_not_reached();
556560
}
557561

558562
ctx = g_new0(QCryptoNettleDES3, 1);
@@ -663,8 +667,10 @@ static QCryptoCipher *qcrypto_cipher_ctx_new(QCryptoCipherAlgorithm alg,
663667
case QCRYPTO_CIPHER_MODE_CTR:
664668
drv = &qcrypto_nettle_cast128_driver_ctr;
665669
break;
666-
default:
670+
case QCRYPTO_CIPHER_MODE_XTS:
667671
goto bad_cipher_mode;
672+
default:
673+
g_assert_not_reached();
668674
}
669675

670676
ctx = g_new0(QCryptoNettleCAST128, 1);
@@ -741,8 +747,12 @@ static QCryptoCipher *qcrypto_cipher_ctx_new(QCryptoCipherAlgorithm alg,
741747
case QCRYPTO_CIPHER_MODE_ECB:
742748
drv = &qcrypto_nettle_sm4_driver_ecb;
743749
break;
744-
default:
750+
case QCRYPTO_CIPHER_MODE_CBC:
751+
case QCRYPTO_CIPHER_MODE_CTR:
752+
case QCRYPTO_CIPHER_MODE_XTS:
745753
goto bad_cipher_mode;
754+
default:
755+
g_assert_not_reached();
746756
}
747757

748758
ctx = g_new0(QCryptoNettleSm4, 1);

0 commit comments

Comments
 (0)