From: Paul Kocialkowski <paul.kocialkowski@linux.intel.com>
To: Gabriel Krisman Bertazi <krisman@collabora.co.uk>,
intel-gfx@lists.freedesktop.org
Subject: Re: [PATCH i-g-t] lib/igt_debugfs: Prevent compiler warning on unchecked printf format
Date: Tue, 01 Aug 2017 12:27:25 +0300 [thread overview]
Message-ID: <1501579645.1304.2.camel@linux.intel.com> (raw)
In-Reply-To: <20170727045128.7928-1-krisman@collabora.co.uk>
On Thu, 2017-07-27 at 01:51 -0300, Gabriel Krisman Bertazi wrote:
> Commit 34a54192e1fb ("lib/igt_debugfs: Add extended helper to format
> crc to string") introduced the following compiler warning:
>
> igt_debugfs.c: In function ‘igt_crc_to_string_extended’:
> igt_debugfs.c:373:4: warning: format not a string literal, argument
> types not checked [-Wformat-nonliteral]
> i == (crc->n_words - 1) ? '\0' : delimiter);
Thanks for the fix, I wasn't even aware that the printf format you used
("%0*x%c") existed! This is definitely what I should have done. And it's
definitely better to get rid of the fixed-length allocated buffer.
> This patch addresses the warning while also preventing a possible bad
> memory access access if n_words is > 64. I have no clue why we
> care about the padding size (crc_size), but since this was added
> recently, I'd rather leave it alone.
That's because the Chamelium CRCs are actually 2 bytes, not the full 4
that the type allows, so this avoids printing heading zeros all the
time.
> Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.co.uk>
> ---
> lib/igt_debugfs.c | 13 ++++++++-----
> 1 file changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
> index 2aa335866066..ee1f0f544824 100644
> --- a/lib/igt_debugfs.c
> +++ b/lib/igt_debugfs.c
> @@ -351,7 +351,7 @@ bool igt_check_crc_equal(const igt_crc_t *a, const
> igt_crc_t *b)
> * igt_crc_to_string_extended:
> * @crc: pipe CRC value to print
> * @delimiter: The delimiter to use between crc words
> - * @crc_size: the number of bytes to print per crc word (either 4 or
> 2)
> + * @crc_size: the number of bytes to print per crc word (between 1
> and 4)
> *
> * This function allocates a string and formats @crc into it,
> depending on
> * @delimiter and @crc_size.
> @@ -362,16 +362,19 @@ bool igt_check_crc_equal(const igt_crc_t *a,
> const igt_crc_t *b)
> char *igt_crc_to_string_extended(igt_crc_t *crc, char delimiter, int
> crc_size)
> {
> int i;
> - char *buf = calloc(128, sizeof(char));
> - const char *format[2] = { "%08x%c", "%04x%c" };
> + int len = 0;
> + int field_width = 2 * crc_size; /* Two chars per byte. */
> + char *buf = malloc((field_width+1) * crc->n_words *
> sizeof(char));
>
> if (!buf)
> return NULL;
>
> for (i = 0; i < crc->n_words; i++)
> - sprintf(buf + strlen(buf), format[crc_size == 2],
> crc->crc[i],
> - i == (crc->n_words - 1) ? '\0' : delimiter);
> + len += sprintf(buf + len, "%0*x%c", field_width,
> + crc->crc[i], delimiter);
>
> + /* Eat the last delimiter */
> + buf[len - 1] = '\0';
> return buf;
> }
>
--
Paul Kocialkowski <paul.kocialkowski@linux.intel.com>
Intel Finland Oy - BIC 0357606-4 - Westendinkatu 7, 02160 Espoo, Finland
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
prev parent reply other threads:[~2017-08-01 9:27 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-27 4:51 [PATCH i-g-t] lib/igt_debugfs: Prevent compiler warning on unchecked printf format Gabriel Krisman Bertazi
2017-08-01 9:15 ` Arkadiusz Hiler
2017-08-01 9:27 ` Paul Kocialkowski [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1501579645.1304.2.camel@linux.intel.com \
--to=paul.kocialkowski@linux.intel.com \
--cc=intel-gfx@lists.freedesktop.org \
--cc=krisman@collabora.co.uk \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.