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>
diff --git a/tests/psa-client-server/psasim/src/psa_sim_crypto_server.c b/tests/psa-client-server/psasim/src/psa_sim_crypto_server.c
index 7a80682..7e874d1 100644
--- a/tests/psa-client-server/psasim/src/psa_sim_crypto_server.c
+++ b/tests/psa-client-server/psasim/src/psa_sim_crypto_server.c
@@ -57,6 +57,7 @@
fail:
free(result);
+
return 0; // This shouldn't happen!
}
@@ -125,6 +126,7 @@
fail:
free(result);
+
return 0; // This shouldn't happen!
}
@@ -200,6 +202,7 @@
fail:
free(result);
+
return 0; // This shouldn't happen!
}
@@ -274,10 +277,17 @@
*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 @@
*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 @@
*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 @@
fail:
free(result);
+
return 0; // This shouldn't happen!
}
@@ -617,10 +640,15 @@
*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 @@
*out_params = result;
*out_params_len = result_size;
+ free(hash);
+
return 1; // success
fail:
free(result);
+
+ free(hash);
+
return 0; // This shouldn't happen!
}
diff --git a/tests/psa-client-server/psasim/src/psa_sim_generate.pl b/tests/psa-client-server/psasim/src/psa_sim_generate.pl
index 9eef1e5..7fea72c 100755
--- a/tests/psa-client-server/psasim/src/psa_sim_generate.pl
+++ b/tests/psa-client-server/psasim/src/psa_sim_generate.pl
@@ -484,6 +484,8 @@
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 @@
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 @@
}
}
+ 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