aboutsummaryrefslogtreecommitdiffstats
path: root/src/pki/commands/keyid.c
diff options
context:
space:
mode:
authorMartin Willi <martin@revosec.ch>2013-11-21 12:19:20 +0100
committerMartin Willi <martin@revosec.ch>2014-01-23 15:55:32 +0100
commit1c4a3459f72da4391c1befe22e62356d838af46d (patch)
treea60e5be4cf8c95c05b891f84df5ffa1069ec65ef /src/pki/commands/keyid.c
parent595b6d9a828538072dcf65c276b848a02698fdfe (diff)
downloadstrongswan-1c4a3459f72da4391c1befe22e62356d838af46d.tar.bz2
strongswan-1c4a3459f72da4391c1befe22e62356d838af46d.tar.xz
chunk: Use dynamically allocated buffer in chunk_from_fd()
When acting on files, we can use fstat() to estimate the buffer size. On non-file FDs, we dynamically increase an allocated buffer. Additionally we slightly change the function signature to properly handle zero-length files and add appropriate unit tests.
Diffstat (limited to 'src/pki/commands/keyid.c')
-rw-r--r--src/pki/commands/keyid.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/pki/commands/keyid.c b/src/pki/commands/keyid.c
index 353670e32..64bb3cc2c 100644
--- a/src/pki/commands/keyid.c
+++ b/src/pki/commands/keyid.c
@@ -13,6 +13,8 @@
* for more details.
*/
+#include <errno.h>
+
#include "pki.h"
#include <credentials/certificates/certificate.h>
@@ -89,7 +91,11 @@ static int keyid()
{
chunk_t chunk;
- chunk = chunk_from_fd(0);
+ if (!chunk_from_fd(0, &chunk))
+ {
+ fprintf(stderr, "reading input failed: %s\n", strerror(errno));
+ return 1;
+ }
cred = lib->creds->create(lib->creds, type, subtype,
BUILD_BLOB, chunk, BUILD_END);
free(chunk.ptr);
@@ -165,4 +171,3 @@ static void __attribute__ ((constructor))reg()
}
});
}
-