[PATCH 03/15] debug: Add fortify dprintf tests

Siddhesh Poyarekar siddhesh@gotplt.org
Thu Dec 21 20:03:29 GMT 2023



On 2023-12-21 13:59, Adhemerval Zanella wrote:
> Similar to other printf-like ones.
> 
> Checked on aarch64, armhf, x86_64, and i686.
> ---

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>

>   debug/tst-fortify.c | 22 ++++++++++++++++++++++
>   1 file changed, 22 insertions(+)
> 
> diff --git a/debug/tst-fortify.c b/debug/tst-fortify.c
> index 5cd9d22feb..888eae25ad 100644
> --- a/debug/tst-fortify.c
> +++ b/debug/tst-fortify.c
> @@ -59,6 +59,8 @@
>   
>   static char *temp_filename;
>   
> +static int temp_fd_dprintf;
> +
>   static void
>   do_prepare (int argc, char *argv[])
>   {
> @@ -76,6 +78,13 @@ do_prepare (int argc, char *argv[])
>         unlink (temp_filename);
>         exit (1);
>       }
> +
> +  temp_fd_dprintf = create_temp_file ("tst-chk2.", NULL);
> +  if (temp_fd_dprintf == -1)
> +    {
> +      printf ("cannot create temporary file: %m\n");
> +      exit (1);
> +    }
>   }
>   #define PREPARE do_prepare
>   
> @@ -901,6 +910,10 @@ do_test (void)
>         || n1 != 1 || n2 != 2)
>       FAIL ();
>   
> +  if (dprintf (temp_fd_dprintf, "%s%n%s%n", str2, &n1, str2, &n2) != 2
> +      || n1 != 1 || n2 != 2)
> +    FAIL ();
> +
>     strcpy (buf2 + 2, "%n%s%n");
>     /* When the format string is writable and contains %n,
>        with -D_FORTIFY_SOURCE=2 it causes __chk_fail.  */
> @@ -914,6 +927,11 @@ do_test (void)
>       FAIL ();
>     CHK_FAIL2_END
>   
> +  CHK_FAIL2_START
> +  if (dprintf (temp_fd_dprintf, buf2, str2, &n1, str2, &n1) != 2)
> +    FAIL ();
> +  CHK_FAIL2_END
> +
>     /* But if there is no %n, even writable format string
>        should work.  */
>     buf2[6] = '\0';
> @@ -1263,6 +1281,10 @@ do_test (void)
>     snprintf (buf, buf_size, "%3$d\n", 1, 2, 3, 4);
>     CHK_FAIL2_END
>   
> +  CHK_FAIL2_START
> +  dprintf (temp_fd_dprintf, "%3$d\n", 1, 2, 3, 4);
> +  CHK_FAIL2_END
> +
>     int sp[2];
>     if (socketpair (PF_UNIX, SOCK_STREAM, 0, sp))
>       FAIL ();


More information about the Libc-alpha mailing list