fp_toradix_n: make sure too small strings are recognized

If maxlen is too small then we get FP_OKAY as return value but not
everything is part of the string. This patch changes it so that the
caller learns about this short comming.

While at it, drop the doxygen style comment. It is the only of his kind
and does no longer match the code.

Signed-off-by: Sebastian Andrzej Siewior <sebastian@breakpoint.cc>
This commit is contained in:
Sebastian Andrzej Siewior 2015-02-25 23:16:52 +01:00 committed by Steffen Jaeckel
parent e0fe602802
commit 6fbf2ba87d

View File

@ -9,22 +9,6 @@
*/
#include <tfm.h>
/**
* a: pointer to fp_int representing the input number
* str: output buffer
* radix: number of character to use for encoding of the number
* maxlen: maximum number of the buffer that can be used
*
* The radix value can be in the range 2 to 64. This function converts number
* a into a string str. This function writes at most size bytes (including the
* terminating null byte to str. It behaves like snprintf(3) in regard to this.
*
* Return: If invalid parameter are detected a negative value is returned. On
* success the function returns the number of bytes that would be written if
* the function had enough space. Thus a return value of maxlen or more means
* that the function was not able store all characters and the output is
* incomplete.
*/
int fp_toradix_n(fp_int *a, char *str, int radix, int maxlen)
{
int digs;
@ -77,6 +61,8 @@ int fp_toradix_n(fp_int *a, char *str, int radix, int maxlen)
/* append a NULL so the string is properly terminated */
*str = '\0';
if (maxlen < 1)
return FP_VAL;
return FP_OKAY;
}