mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-04-15 23:42:41 +00: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:
parent
ca0c147354
commit
8bfb758e87
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user