Commit 17bb60b7 authored by Takashi Iwai's avatar Takashi Iwai Committed by Darrick J. Wong

xfs: Use scnprintf() for avoiding potential buffer overflow

Since snprintf() returns the would-be-output size instead of the
actual output size, the succeeding calls may go beyond the given
buffer limit.  Fix it by replacing with scnprintf().
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Reviewed-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
Signed-off-by: default avatarDarrick J. Wong <darrick.wong@oracle.com>
parent 806d3909
...@@ -57,13 +57,13 @@ int xfs_stats_format(struct xfsstats __percpu *stats, char *buf) ...@@ -57,13 +57,13 @@ int xfs_stats_format(struct xfsstats __percpu *stats, char *buf)
/* Loop over all stats groups */ /* Loop over all stats groups */
for (i = j = 0; i < ARRAY_SIZE(xstats); i++) { for (i = j = 0; i < ARRAY_SIZE(xstats); i++) {
len += snprintf(buf + len, PATH_MAX - len, "%s", len += scnprintf(buf + len, PATH_MAX - len, "%s",
xstats[i].desc); xstats[i].desc);
/* inner loop does each group */ /* inner loop does each group */
for (; j < xstats[i].endpoint; j++) for (; j < xstats[i].endpoint; j++)
len += snprintf(buf + len, PATH_MAX - len, " %u", len += scnprintf(buf + len, PATH_MAX - len, " %u",
counter_val(stats, j)); counter_val(stats, j));
len += snprintf(buf + len, PATH_MAX - len, "\n"); len += scnprintf(buf + len, PATH_MAX - len, "\n");
} }
/* extra precision counters */ /* extra precision counters */
for_each_possible_cpu(i) { for_each_possible_cpu(i) {
...@@ -72,9 +72,9 @@ int xfs_stats_format(struct xfsstats __percpu *stats, char *buf) ...@@ -72,9 +72,9 @@ int xfs_stats_format(struct xfsstats __percpu *stats, char *buf)
xs_read_bytes += per_cpu_ptr(stats, i)->s.xs_read_bytes; xs_read_bytes += per_cpu_ptr(stats, i)->s.xs_read_bytes;
} }
len += snprintf(buf + len, PATH_MAX-len, "xpc %Lu %Lu %Lu\n", len += scnprintf(buf + len, PATH_MAX-len, "xpc %Lu %Lu %Lu\n",
xs_xstrat_bytes, xs_write_bytes, xs_read_bytes); xs_xstrat_bytes, xs_write_bytes, xs_read_bytes);
len += snprintf(buf + len, PATH_MAX-len, "debug %u\n", len += scnprintf(buf + len, PATH_MAX-len, "debug %u\n",
#if defined(DEBUG) #if defined(DEBUG)
1); 1);
#else #else
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment