setregid01: Fix security warning for string formatting

Message ID 20190225171220.5827-1-daniel.diaz@linaro.org
State New
Headers show
Series
  • setregid01: Fix security warning for string formatting
Related show

Commit Message

Daniel Díaz Feb. 25, 2019, 5:12 p.m.
GCC 8.2.0 complains with the following:
  setregid01.c: In function 'run':
  setregid01.c:47:3: error: format not a string literal and no format arguments [-Werror=format-security]
     tst_res(TFAIL | TTERRNO, tc->msg);
     ^~~~~~~
because there is no string formatting in the message. This can
be seen with CFLAGS set to:
  -Wformat -Wformat-security -Werror=format-security
as Yocto Project's Poky does, e.g.:
  http://errors.yoctoproject.org/Errors/Details/230043/

Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
---
 testcases/kernel/syscalls/setregid/setregid01.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Enji Cooper (yaneurabeya) Feb. 25, 2019, 5:33 p.m. | #1
> On Feb 25, 2019, at 09:12, Daniel Díaz <daniel.diaz@linaro.org> wrote:
> 
> GCC 8.2.0 complains with the following:
>  setregid01.c: In function 'run':
>  setregid01.c:47:3: error: format not a string literal and no format arguments [-Werror=format-security]
>     tst_res(TFAIL | TTERRNO, tc->msg);
>     ^~~~~~~
> because there is no string formatting in the message. This can
> be seen with CFLAGS set to:
>  -Wformat -Wformat-security -Werror=format-security
> as Yocto Project's Poky does, e.g.:
>  http://errors.yoctoproject.org/Errors/Details/230043/
> 
> Signed-off-by: Daniel Díaz <daniel.diaz@linaro.org>
> ---
> testcases/kernel/syscalls/setregid/setregid01.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/testcases/kernel/syscalls/setregid/setregid01.c b/testcases/kernel/syscalls/setregid/setregid01.c
> index f2e41e134..8c9e11918 100644
> --- a/testcases/kernel/syscalls/setregid/setregid01.c
> +++ b/testcases/kernel/syscalls/setregid/setregid01.c
> @@ -44,9 +44,9 @@ static void run(unsigned int n)
>    TEST(SETREGID(*tc->arg1, *tc->arg2));
> 
>    if (TST_RET == -1)
> -        tst_res(TFAIL | TTERRNO, tc->msg);
> +        tst_res(TFAIL | TTERRNO, "%s", tc->msg);
>    else
> -        tst_res(TPASS, tc->msg);
> +        tst_res(TPASS, "%s", tc->msg);
> }
> 
> static void setup(void)
> -- 
> 2.17.1

LGTM!
Petr Vorel Feb. 25, 2019, 9:34 p.m. | #2
Hi Daniel,

thanks for your patch, merged.

Maybe we should have -Wformat -Wformat-security -Werror=format-security as the
default.

Kind regards,
Petr
Cyril Hrubis Feb. 26, 2019, 11:06 a.m. | #3
Hi!
> Maybe we should have -Wformat -Wformat-security -Werror=format-security as the
> default.

I'm all for it but we have to check if a compiler on oldest supported
distro works fine with these flags, othewise we would have to add a
configure check...

Patch

diff --git a/testcases/kernel/syscalls/setregid/setregid01.c b/testcases/kernel/syscalls/setregid/setregid01.c
index f2e41e134..8c9e11918 100644
--- a/testcases/kernel/syscalls/setregid/setregid01.c
+++ b/testcases/kernel/syscalls/setregid/setregid01.c
@@ -44,9 +44,9 @@  static void run(unsigned int n)
 	TEST(SETREGID(*tc->arg1, *tc->arg2));
 
 	if (TST_RET == -1)
-		tst_res(TFAIL | TTERRNO, tc->msg);
+		tst_res(TFAIL | TTERRNO, "%s", tc->msg);
 	else
-		tst_res(TPASS, tc->msg);
+		tst_res(TPASS, "%s", tc->msg);
 }
 
 static void setup(void)