aboutsummaryrefslogtreecommitdiffstats
path: root/src/libstrongswan/utils/chunk.h
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/libstrongswan/utils/chunk.h
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/libstrongswan/utils/chunk.h')
-rw-r--r--src/libstrongswan/utils/chunk.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/libstrongswan/utils/chunk.h b/src/libstrongswan/utils/chunk.h
index 92a96ffba..1228da30e 100644
--- a/src/libstrongswan/utils/chunk.h
+++ b/src/libstrongswan/utils/chunk.h
@@ -102,10 +102,13 @@ bool chunk_write(chunk_t chunk, char *path, char *label, mode_t mask, bool force
/**
* Store data read from FD into a chunk
*
+ * On error, errno is set appropriately.
+ *
* @param fd file descriptor to read from
- * @return chunk or chunk_empty on failure
+ * @param chunk chunk receiving allocated buffer
+ * @return TRUE if successful, FALSE on failure
*/
-chunk_t chunk_from_fd(int fd);
+bool chunk_from_fd(int fd, chunk_t *chunk);
/**
* mmap() a file to a chunk