[Skiboot] [PATCH] Fix FTBFS with -Werror=format-overflow
Andrew Donnellan
andrew.donnellan at au1.ibm.com
Tue Jan 30 13:28:24 AEDT 2018
On 26/01/18 00:14, Frédéric Bonnard wrote:
> i2c.c fails to compile with gcc7 and -Werror=format-overflow used in
> Debian Unstable and Ubuntu 18.04 :
>
> i2c.c: In function ‘i2c_init’:
> i2c.c:211:15: error: ‘%s’ directive writing up to 255 bytes into a
> region of size 236 [-Werror=format-overflow=]
>
> We just make sure we never write more than what the destination can
> store.
>
> Signed-off-by: Frédéric Bonnard <frediz at linux.vnet.ibm.com>
> ---
> external/opal-prd/i2c.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/external/opal-prd/i2c.c b/external/opal-prd/i2c.c
> index ba4b3c85..dca303e4 100644
> --- a/external/opal-prd/i2c.c
> +++ b/external/opal-prd/i2c.c
> @@ -234,7 +234,13 @@ void i2c_init(void)
> continue;
>
> /* Get bus name */
> - sprintf(dpath, SYSFS "/class/i2c-dev/%s/name", devent->d_name);
> + if (snprintf(dpath, NAME_MAX, SYSFS "/class/i2c-dev/%s/name",
> + devent->d_name) < 0 ) {
If the string is too long, snprintf() will truncate and return number of
bytes written, not a negative error code.
> + pr_log(LOG_ERR, "I2C: bus name longer than NAME_MAX : "
Strictly speaking, the bus name doesn't have to be longer than NAME_MAX,
it's the entire path.
I suspect that dpath should actually be of length PATH_MAX...
Andrew
> + SYSFS "/class/i2c-dev/%s/name",
> + devent->d_name);
> + return;
> + }
> f = fopen(dpath, "r");
> if (!f) {
> pr_log(LOG_NOTICE, "I2C: Can't open %s: %m, skipping.",
>
--
Andrew Donnellan OzLabs, ADL Canberra
andrew.donnellan at au1.ibm.com IBM Australia Limited
More information about the Skiboot
mailing list