diff options
author | Andreas Schneider <asn@cryptomilk.org> | 2019-05-28 08:48:33 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2019-05-28 09:18:53 +0200 |
commit | 77ada9e4dc8f784cba301dda8f196de9abc86942 (patch) | |
tree | 6ea86bce09486b8bafff73c89333c9a9f6b2406d /tests/unittests/torture_keyfiles.c | |
parent | 328a631a0f28f84208ea079486011ea7b0c82c35 (diff) | |
download | libssh-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.c | 31 |
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) { |