@@ -425,10 +425,11 @@ static mongoc_client_encryption_datakey_opts_t* phongo_clientencryption_datakey_
425
425
static void phongo_clientencryption_create_datakey (php_phongo_clientencryption_t * clientencryption , zval * return_value , char * kms_provider , zval * options ) /* {{{ */
426
426
{
427
427
mongoc_client_encryption_datakey_opts_t * opts ;
428
- bson_value_t keyid ;
428
+ bson_value_t keyid = { 0 } ;
429
429
bson_error_t error = { 0 };
430
430
431
431
opts = phongo_clientencryption_datakey_opts_from_zval (options );
432
+
432
433
if (!opts ) {
433
434
/* Exception already thrown */
434
435
goto cleanup ;
@@ -448,6 +449,8 @@ static void phongo_clientencryption_create_datakey(php_phongo_clientencryption_t
448
449
if (opts ) {
449
450
mongoc_client_encryption_datakey_opts_destroy (opts );
450
451
}
452
+
453
+ bson_value_destroy (& keyid );
451
454
} /* }}} */
452
455
453
456
static mongoc_client_encryption_encrypt_opts_t * phongo_clientencryption_encrypt_opts_from_zval (zval * options ) /* {{{ */
@@ -461,14 +464,17 @@ static mongoc_client_encryption_encrypt_opts_t* phongo_clientencryption_encrypt_
461
464
}
462
465
463
466
if (php_array_existsc (options , "keyId" )) {
464
- bson_value_t keyid ;
467
+ bson_value_t keyid = { 0 } ;
465
468
466
469
php_phongo_zval_to_bson_value (php_array_fetchc (options , "keyId" ), PHONGO_BSON_NONE , & keyid );
470
+
467
471
if (EG (exception )) {
472
+ bson_value_destroy (& keyid );
468
473
goto cleanup ;
469
474
}
470
475
471
476
mongoc_client_encryption_encrypt_opts_set_keyid (opts , & keyid );
477
+ bson_value_destroy (& keyid );
472
478
}
473
479
474
480
if (php_array_existsc (options , "keyAltName" )) {
@@ -510,12 +516,14 @@ static mongoc_client_encryption_encrypt_opts_t* phongo_clientencryption_encrypt_
510
516
static void phongo_clientencryption_encrypt (php_phongo_clientencryption_t * clientencryption , zval * zvalue , zval * zciphertext , zval * options ) /* {{{ */
511
517
{
512
518
mongoc_client_encryption_encrypt_opts_t * opts ;
513
- bson_value_t ciphertext , value ;
514
- bson_error_t error = { 0 };
519
+ bson_value_t ciphertext = { 0 };
520
+ bson_value_t value = { 0 };
521
+ bson_error_t error = { 0 };
515
522
516
523
php_phongo_zval_to_bson_value (zvalue , PHONGO_BSON_NONE , & value );
517
524
518
525
opts = phongo_clientencryption_encrypt_opts_from_zval (options );
526
+
519
527
if (!opts ) {
520
528
/* Exception already thrown */
521
529
goto cleanup ;
@@ -535,24 +543,32 @@ static void phongo_clientencryption_encrypt(php_phongo_clientencryption_t* clien
535
543
if (opts ) {
536
544
mongoc_client_encryption_encrypt_opts_destroy (opts );
537
545
}
546
+
547
+ bson_value_destroy (& ciphertext );
548
+ bson_value_destroy (& value );
538
549
} /* }}} */
539
550
540
551
static void phongo_clientencryption_decrypt (php_phongo_clientencryption_t * clientencryption , zval * zciphertext , zval * zvalue ) /* {{{ */
541
552
{
542
- bson_value_t ciphertext , value ;
543
- bson_error_t error = { 0 };
553
+ bson_value_t ciphertext = { 0 };
554
+ bson_value_t value = { 0 };
555
+ bson_error_t error = { 0 };
544
556
545
557
php_phongo_zval_to_bson_value (zciphertext , PHONGO_BSON_NONE , & ciphertext );
546
558
547
559
if (!mongoc_client_encryption_decrypt (clientencryption -> client_encryption , & ciphertext , & value , & error )) {
548
560
phongo_throw_exception_from_bson_error_t (& error );
549
- return ;
561
+ goto cleanup ;
550
562
}
551
563
552
564
if (!php_phongo_bson_value_to_zval (& value , zvalue )) {
553
565
/* Exception already thrown */
554
- return ;
566
+ goto cleanup ;
555
567
}
568
+
569
+ cleanup :
570
+ bson_value_destroy (& ciphertext );
571
+ bson_value_destroy (& value );
556
572
} /* }}} */
557
573
#else /* MONGOC_ENABLE_CLIENT_SIDE_ENCRYPTION */
558
574
void phongo_clientencryption_init (php_phongo_clientencryption_t * clientencryption , zval * manager , zval * options ) /* {{{ */
0 commit comments