[Cryptography] [patch chacha20_drng 4/4] API: Make _versionstring return snprintf() errors
Jason Cooper
cryptography at lakedaemon.net
Fri Aug 5 15:21:55 EDT 2016
From: Jason Cooper <jason at lakedaemon.net>
snprintf() can fail or truncate when the user supplied data is incorrect
or insufficient. We really should let the caller know when that
happens.
Signed-off-by: Jason Cooper <jason at lakedaemon.net>
---
chacha20_drng.c | 4 ++--
chacha20_drng.h | 9 ++++++++-
2 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/chacha20_drng.c b/chacha20_drng.c
index 468909042abb..971317448fc2 100644
--- a/chacha20_drng.c
+++ b/chacha20_drng.c
@@ -602,9 +602,9 @@ int drng_chacha20_get(struct chacha20_drng *drng, uint8_t *outbuf,
return 0;
}
-void drng_chacha20_versionstring(char *buf, uint32_t buflen)
+int drng_chacha20_versionstring(char *buf, uint32_t buflen)
{
- snprintf(buf, buflen, "ChaCha20 DRNG %d.%d.%d",
+ return snprintf(buf, buflen, "ChaCha20 DRNG %d.%d.%d",
MAJVERSION, MINVERSION, PATCHLEVEL);
}
diff --git a/chacha20_drng.h b/chacha20_drng.h
index 3116731339af..2f05aad5e3ea 100644
--- a/chacha20_drng.h
+++ b/chacha20_drng.h
@@ -147,9 +147,16 @@ int drng_chacha20_reseed(struct chacha20_drng *drng, const uint8_t *inbuf,
*
* @buf: [out] buffer to place version string into
* @buflen: [in] length of buffer
+ *
+ * @buf is filled with a string of the form "chacha20 DRNG X.Y.Z". Care
+ * should be taken to provide a large enough buffer taking in to account that
+ * X, Y, and/or Z may be multiple characters.
+ *
+ * @return status of snprintf(3). < 0 on error, otherwise length of written
+ * string. See snprintf(3) for details on truncation.
*/
DSO_PUBLIC
-void drng_chacha20_versionstring(char *buf, uint32_t buflen);
+int drng_chacha20_versionstring(char *buf, uint32_t buflen);
/**
* drng_chacha20_version() - return machine-usable version number of ChaCha20
--
2.9.2
More information about the cryptography
mailing list