aboutsummaryrefslogtreecommitdiff
path: root/tests/unittests/torture_keyfiles.c
diff options
context:
space:
mode:
authorAndreas Schneider <asn@cryptomilk.org>2019-05-28 08:48:33 +0200
committerAndreas Schneider <asn@cryptomilk.org>2019-05-28 09:18:53 +0200
commit77ada9e4dc8f784cba301dda8f196de9abc86942 (patch)
tree6ea86bce09486b8bafff73c89333c9a9f6b2406d /tests/unittests/torture_keyfiles.c
parent328a631a0f28f84208ea079486011ea7b0c82c35 (diff)
downloadlibssh-77ada9e4dc8f784cba301dda8f196de9abc86942.tar.gz
libssh-77ada9e4dc8f784cba301dda8f196de9abc86942.tar.xz
libssh-77ada9e4dc8f784cba301dda8f196de9abc86942.zip
tests: Fix null termination in torture_read_one_line()
CID 1393902 Signed-off-by: Andreas Schneider <asn@cryptomilk.org>
Diffstat (limited to 'tests/unittests/torture_keyfiles.c')
-rw-r--r--tests/unittests/torture_keyfiles.c31
1 files changed, 16 insertions, 15 deletions
diff --git a/tests/unittests/torture_keyfiles.c b/tests/unittests/torture_keyfiles.c
index aea05972..2f06e88b 100644
--- a/tests/unittests/torture_keyfiles.c
+++ b/tests/unittests/torture_keyfiles.c
@@ -132,25 +132,26 @@ static void torture_pubkey_from_file(void **state) {
SSH_STRING_FREE(pubkey);
}
-static int torture_read_one_line(const char *filename, char *buffer, size_t len) {
- FILE *fp;
- size_t rc;
+static int torture_read_one_line(const char *filename, char *buffer, size_t len)
+{
+ FILE *fp;
+ size_t nmemb;
- fp = fopen(filename, "r");
- if (fp == NULL) {
- return -1;
- }
+ fp = fopen(filename, "r");
+ if (fp == NULL) {
+ return -1;
+ }
- rc = fread(buffer, len, 1, fp);
- if (rc != 0 || ferror(fp)) {
- fclose(fp);
- return -1;
- }
- buffer[len - 1] = '\0';
+ nmemb = fread(buffer, len - 2, 1, fp);
+ if (nmemb != 0 || ferror(fp)) {
+ fclose(fp);
+ return -1;
+ }
+ buffer[len - 1] = '\0';
- fclose(fp);
+ fclose(fp);
- return 0;
+ return 0;
}
static void torture_pubkey_generate_from_privkey(void **state) {