mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2026-04-15 08:28:50 +02:00
PSA crypto sim's server wrappers need to free deseraliased buffers when they're no longer needed
Signed-off-by: Tom Cosgrove <tom.cosgrove@arm.com>
This commit is contained in:
@@ -57,6 +57,7 @@ int psa_crypto_init_wrapper(
|
||||
|
||||
fail:
|
||||
free(result);
|
||||
|
||||
return 0; // This shouldn't happen!
|
||||
}
|
||||
|
||||
@@ -125,6 +126,7 @@ int psa_hash_abort_wrapper(
|
||||
|
||||
fail:
|
||||
free(result);
|
||||
|
||||
return 0; // This shouldn't happen!
|
||||
}
|
||||
|
||||
@@ -200,6 +202,7 @@ int psa_hash_clone_wrapper(
|
||||
|
||||
fail:
|
||||
free(result);
|
||||
|
||||
return 0; // This shouldn't happen!
|
||||
}
|
||||
|
||||
@@ -274,10 +277,17 @@ int psa_hash_compare_wrapper(
|
||||
*out_params = result;
|
||||
*out_params_len = result_size;
|
||||
|
||||
free(input);
|
||||
free(hash);
|
||||
|
||||
return 1; // success
|
||||
|
||||
fail:
|
||||
free(result);
|
||||
|
||||
free(input);
|
||||
free(hash);
|
||||
|
||||
return 0; // This shouldn't happen!
|
||||
}
|
||||
|
||||
@@ -371,10 +381,17 @@ int psa_hash_compute_wrapper(
|
||||
*out_params = result;
|
||||
*out_params_len = result_size;
|
||||
|
||||
free(input);
|
||||
free(hash);
|
||||
|
||||
return 1; // success
|
||||
|
||||
fail:
|
||||
free(result);
|
||||
|
||||
free(input);
|
||||
free(hash);
|
||||
|
||||
return 0; // This shouldn't happen!
|
||||
}
|
||||
|
||||
@@ -466,10 +483,15 @@ int psa_hash_finish_wrapper(
|
||||
*out_params = result;
|
||||
*out_params_len = result_size;
|
||||
|
||||
free(hash);
|
||||
|
||||
return 1; // success
|
||||
|
||||
fail:
|
||||
free(result);
|
||||
|
||||
free(hash);
|
||||
|
||||
return 0; // This shouldn't happen!
|
||||
}
|
||||
|
||||
@@ -545,6 +567,7 @@ int psa_hash_setup_wrapper(
|
||||
|
||||
fail:
|
||||
free(result);
|
||||
|
||||
return 0; // This shouldn't happen!
|
||||
}
|
||||
|
||||
@@ -617,10 +640,15 @@ int psa_hash_update_wrapper(
|
||||
*out_params = result;
|
||||
*out_params_len = result_size;
|
||||
|
||||
free(input);
|
||||
|
||||
return 1; // success
|
||||
|
||||
fail:
|
||||
free(result);
|
||||
|
||||
free(input);
|
||||
|
||||
return 0; // This shouldn't happen!
|
||||
}
|
||||
|
||||
@@ -693,10 +721,15 @@ int psa_hash_verify_wrapper(
|
||||
*out_params = result;
|
||||
*out_params_len = result_size;
|
||||
|
||||
free(hash);
|
||||
|
||||
return 1; // success
|
||||
|
||||
fail:
|
||||
free(result);
|
||||
|
||||
free(hash);
|
||||
|
||||
return 0; // This shouldn't happen!
|
||||
}
|
||||
|
||||
|
||||
@@ -484,6 +484,8 @@ sub output_server_wrapper
|
||||
my $ret_name = $f->{return}->{name};
|
||||
my $ret_default = $f->{return}->{default};
|
||||
|
||||
my @buffers = (); # We need to free() these on exit
|
||||
|
||||
print $fh <<EOF;
|
||||
|
||||
// Returns 1 for success, 0 for failure
|
||||
@@ -509,6 +511,7 @@ EOF
|
||||
uint8_t *$n1 = NULL;
|
||||
size_t $n2;
|
||||
EOF
|
||||
push(@buffers, $n1); # Add to the list to be free()d at end
|
||||
} else {
|
||||
$argname =~ s/^\*//; # Remove any leading *
|
||||
print $fh <<EOF;
|
||||
@@ -672,15 +675,19 @@ EOF
|
||||
}
|
||||
}
|
||||
|
||||
my $free_buffers = join("", map { " free($_);\n" } @buffers);
|
||||
$free_buffers = "\n" . $free_buffers if length($free_buffers);
|
||||
|
||||
print $fh <<EOF;
|
||||
|
||||
*out_params = result;
|
||||
*out_params_len = result_size;
|
||||
|
||||
$free_buffers
|
||||
return 1; // success
|
||||
|
||||
fail:
|
||||
free(result);
|
||||
$free_buffers
|
||||
return 0; // This shouldn't happen!
|
||||
}
|
||||
EOF
|
||||
|
||||
Reference in New Issue
Block a user