mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-04-16 08:42:50 +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:
|
fail:
|
||||||
free(result);
|
free(result);
|
||||||
|
|
||||||
return 0; // This shouldn't happen!
|
return 0; // This shouldn't happen!
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,6 +126,7 @@ int psa_hash_abort_wrapper(
|
|||||||
|
|
||||||
fail:
|
fail:
|
||||||
free(result);
|
free(result);
|
||||||
|
|
||||||
return 0; // This shouldn't happen!
|
return 0; // This shouldn't happen!
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -200,6 +202,7 @@ int psa_hash_clone_wrapper(
|
|||||||
|
|
||||||
fail:
|
fail:
|
||||||
free(result);
|
free(result);
|
||||||
|
|
||||||
return 0; // This shouldn't happen!
|
return 0; // This shouldn't happen!
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,10 +277,17 @@ int psa_hash_compare_wrapper(
|
|||||||
*out_params = result;
|
*out_params = result;
|
||||||
*out_params_len = result_size;
|
*out_params_len = result_size;
|
||||||
|
|
||||||
|
free(input);
|
||||||
|
free(hash);
|
||||||
|
|
||||||
return 1; // success
|
return 1; // success
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
free(result);
|
free(result);
|
||||||
|
|
||||||
|
free(input);
|
||||||
|
free(hash);
|
||||||
|
|
||||||
return 0; // This shouldn't happen!
|
return 0; // This shouldn't happen!
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,10 +381,17 @@ int psa_hash_compute_wrapper(
|
|||||||
*out_params = result;
|
*out_params = result;
|
||||||
*out_params_len = result_size;
|
*out_params_len = result_size;
|
||||||
|
|
||||||
|
free(input);
|
||||||
|
free(hash);
|
||||||
|
|
||||||
return 1; // success
|
return 1; // success
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
free(result);
|
free(result);
|
||||||
|
|
||||||
|
free(input);
|
||||||
|
free(hash);
|
||||||
|
|
||||||
return 0; // This shouldn't happen!
|
return 0; // This shouldn't happen!
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -466,10 +483,15 @@ int psa_hash_finish_wrapper(
|
|||||||
*out_params = result;
|
*out_params = result;
|
||||||
*out_params_len = result_size;
|
*out_params_len = result_size;
|
||||||
|
|
||||||
|
free(hash);
|
||||||
|
|
||||||
return 1; // success
|
return 1; // success
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
free(result);
|
free(result);
|
||||||
|
|
||||||
|
free(hash);
|
||||||
|
|
||||||
return 0; // This shouldn't happen!
|
return 0; // This shouldn't happen!
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -545,6 +567,7 @@ int psa_hash_setup_wrapper(
|
|||||||
|
|
||||||
fail:
|
fail:
|
||||||
free(result);
|
free(result);
|
||||||
|
|
||||||
return 0; // This shouldn't happen!
|
return 0; // This shouldn't happen!
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -617,10 +640,15 @@ int psa_hash_update_wrapper(
|
|||||||
*out_params = result;
|
*out_params = result;
|
||||||
*out_params_len = result_size;
|
*out_params_len = result_size;
|
||||||
|
|
||||||
|
free(input);
|
||||||
|
|
||||||
return 1; // success
|
return 1; // success
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
free(result);
|
free(result);
|
||||||
|
|
||||||
|
free(input);
|
||||||
|
|
||||||
return 0; // This shouldn't happen!
|
return 0; // This shouldn't happen!
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -693,10 +721,15 @@ int psa_hash_verify_wrapper(
|
|||||||
*out_params = result;
|
*out_params = result;
|
||||||
*out_params_len = result_size;
|
*out_params_len = result_size;
|
||||||
|
|
||||||
|
free(hash);
|
||||||
|
|
||||||
return 1; // success
|
return 1; // success
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
free(result);
|
free(result);
|
||||||
|
|
||||||
|
free(hash);
|
||||||
|
|
||||||
return 0; // This shouldn't happen!
|
return 0; // This shouldn't happen!
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -484,6 +484,8 @@ sub output_server_wrapper
|
|||||||
my $ret_name = $f->{return}->{name};
|
my $ret_name = $f->{return}->{name};
|
||||||
my $ret_default = $f->{return}->{default};
|
my $ret_default = $f->{return}->{default};
|
||||||
|
|
||||||
|
my @buffers = (); # We need to free() these on exit
|
||||||
|
|
||||||
print $fh <<EOF;
|
print $fh <<EOF;
|
||||||
|
|
||||||
// Returns 1 for success, 0 for failure
|
// Returns 1 for success, 0 for failure
|
||||||
@ -509,6 +511,7 @@ EOF
|
|||||||
uint8_t *$n1 = NULL;
|
uint8_t *$n1 = NULL;
|
||||||
size_t $n2;
|
size_t $n2;
|
||||||
EOF
|
EOF
|
||||||
|
push(@buffers, $n1); # Add to the list to be free()d at end
|
||||||
} else {
|
} else {
|
||||||
$argname =~ s/^\*//; # Remove any leading *
|
$argname =~ s/^\*//; # Remove any leading *
|
||||||
print $fh <<EOF;
|
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;
|
print $fh <<EOF;
|
||||||
|
|
||||||
*out_params = result;
|
*out_params = result;
|
||||||
*out_params_len = result_size;
|
*out_params_len = result_size;
|
||||||
|
$free_buffers
|
||||||
return 1; // success
|
return 1; // success
|
||||||
|
|
||||||
fail:
|
fail:
|
||||||
free(result);
|
free(result);
|
||||||
|
$free_buffers
|
||||||
return 0; // This shouldn't happen!
|
return 0; // This shouldn't happen!
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
Loading…
x
Reference in New Issue
Block a user