summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSerguey Parkhomovsky <xindigo@gmail.com>2015-12-21 14:40:24 -0800
committerSerguey Parkhomovsky <xindigo@gmail.com>2015-12-21 14:40:24 -0800
commit5f6b7645e6a7b126fa2e628b3bce0104116d2fbc (patch)
treec16a3c1032d521703b61d75176101f162d02ba92 /src
parented855892c7a310f9522bbbd0c567d2c752aa0115 (diff)
buf.c: use snprintf
Diffstat (limited to 'src')
-rw-r--r--src/buf.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/buf.c b/src/buf.c
index 6f6bd9a..2a423ef 100644
--- a/src/buf.c
+++ b/src/buf.c
@@ -93,14 +93,16 @@ struct Buf *buf_linedir (struct Buf *buf, const char* filename, int lineno)
{
char *dst, *t;
const char *src;
+ size_t tsz;
- t = malloc(strlen("#line \"\"\n") + /* constant parts */
- 2 * strlen (filename) + /* filename with possibly all backslashes escaped */
- (int) (1 + log10 (abs (lineno))) + /* line number */
- 1); /* NUL */
+ tsz = strlen("#line \"\"\n") + /* constant parts */
+ 2 * strlen (filename) + /* filename with possibly all backslashes escaped */
+ (int) (1 + log10 (abs (lineno))) + /* line number */
+ 1; /* NUL */
+ t = malloc(tsz);
if (!t)
flexfatal (_("Allocation of buffer for line directive failed"));
- for (dst = t + sprintf (t, "#line %d \"", lineno), src = filename; *src; *dst++ = *src++)
+ for (dst = t + snprintf (t, tsz, "#line %d \"", lineno), src = filename; *src; *dst++ = *src++)
if (*src == '\\') /* escape backslashes */
*dst++ = '\\';
*dst++ = '"';