Applied, thanks!

[email protected], le sam. 04 oct. 2025 20:40:22 +0100, a ecrit:
> From: Diego Nieto Cid <[email protected]>
> 
>     ../../daemons/getty.c: In function 'main':
>     ../../daemons/getty.c:184:3: warning: ignoring return value of 'asprintf' 
> declared with attribute 'warn_unused_result' [-Wunused-result]
>       184 |   asprintf (&ttyname, "%s/%s", _PATH_DEV, argv[2]);
>           |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     ../../daemons/getty.c:186:3: warning: ignoring return value of 'chown' 
> declared with attribute 'warn_unused_result' [-Wunused-result]
>       186 |   chown (ttyname, 0, 0);
>           |   ^~~~~~~~~~~~~~~~~~~~~
>     ../../daemons/getty.c:188:3: warning: ignoring return value of 'revoke' 
> declared with attribute 'warn_unused_result' [-Wunused-result]
>       188 |   revoke (ttyname);
>           |   ^~~~~~~~~~~~~~~~
>     ../../daemons/getty.c:210:3: warning: ignoring return value of 'asprintf' 
> declared with attribute 'warn_unused_result' [-Wunused-result]
>       210 |   asprintf (&arg, "TERM=%s", tt ? tt->ty_type : "unknown");
>           |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     ../../daemons/getty.c: In function 'print_banner':
>     ../../daemons/getty.c:120:3: warning: ignoring return value of 'write' 
> declared with attribute 'warn_unused_result' [-Wunused-result]
>       120 |   write (fd, "\r\n", 2);
>           |   ^~~~~~~~~~~~~~~~~~~~~
>     ../../daemons/getty.c:125:7: warning: ignoring return value of 'write' 
> declared with attribute 'warn_unused_result' [-Wunused-result]
>       125 |       write (fd, s, t - s);
>           |       ^~~~~~~~~~~~~~~~~~~~
>     ../../daemons/getty.c:149:7: warning: ignoring return value of 'write' 
> declared with attribute 'warn_unused_result' [-Wunused-result]
>       149 |       write (fd, expansion, strlen (expansion));
>           |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> =======================================================================
> 
>     ../../daemons/lmail.c: In function 'deliver':
>     ../../daemons/lmail.c:344:3: warning: ignoring return value of 'asprintf' 
> declared with attribute 'warn_unused_result' [-Wunused-result]
>       344 |   asprintf (&mbox, "%s/%s", params->mail_dir, rcpt);
>           |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> 
> =======================================================================
> 
>     ../../daemons/runttys.c: In function 'setup_terminal':
>     ../../daemons/runttys.c:105:7: warning: ignoring return value of 
> 'asprintf' declared with attribute 'warn_unused_result' [-Wunused-result]
>       105 |       asprintf (&line, "%s %s", tt->ty_getty, tt->ty_name);
>           |       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     ../../daemons/runttys.c: In function 'shutdown_terminal':
>     ../../daemons/runttys.c:323:3: warning: ignoring return value of 'revoke' 
> declared with attribute 'warn_unused_result' [-Wunused-result]
>       323 |   revoke (t->name);
>           |   ^~~~~~~~~~~~~~~~
> ---
>  daemons/getty.c   | 54 ++++++++++++++++++++++++++++++++++++++++-------
>  daemons/lmail.c   |  4 ++--
>  daemons/runttys.c |  8 ++++---
>  3 files changed, 53 insertions(+), 13 deletions(-)
> 
> diff --git a/daemons/getty.c b/daemons/getty.c
> index b5b162d5..a6b394c2 100644
> --- a/daemons/getty.c
> +++ b/daemons/getty.c
> @@ -35,6 +35,7 @@
>  #include <utmp.h>
>  #include <sys/ioctl.h>
>  #include <termios.h>
> +#include <assert-backtrace.h>
>  
>  /* XXX: should include directly from libshouldbeinlibc */
>  extern char *localhost (void);
> @@ -111,18 +112,22 @@ load_banner (void)
>  static void
>  print_banner (int fd, char *ttyname)
>  {
> +  ssize_t err;
>    char *s, *t, *expansion;
>    struct utsname u;
> +  size_t len;
>  
>    if (uname (&u))
>      u.sysname[0] = u.release[0] = '\0';
>  
> -  write (fd, "\r\n", 2);
> +  err = write (fd, "\r\n", 2);
> +  assert_backtrace (err == 2);
>    for (s = load_banner (); *s; s++)
>      {
>        for (t = s; *t && *t != '\\'; t++) /* nomnomnom */;
>  
> -      write (fd, s, t - s);
> +      err = write (fd, s, t - s);
> +      assert_backtrace (err == (t - s));
>        if (! *t)
>          return;
>  
> @@ -146,7 +151,9 @@ print_banner (int fd, char *ttyname)
>          default:
>            expansion = "?";
>          }
> -      write (fd, expansion, strlen (expansion));
> +      len = strlen (expansion);
> +      err = write (fd, expansion, len);
> +      assert_backtrace (err == len);
>  
>        s = t + 1;
>      }
> @@ -155,6 +162,7 @@ print_banner (int fd, char *ttyname)
>  int
>  main (int argc, char **argv)
>  {
> +  int err;
>    char *linespec, *ttyname;
>    int tty;
>    struct ttyent *tt;
> @@ -174,11 +182,35 @@ main (int argc, char **argv)
>    linespec = argv[1];
>  
>    tt = getttynam (argv[2]);
> -  asprintf (&ttyname, "%s/%s", _PATH_DEV, argv[2]);
> +  err = asprintf (&ttyname, "%s/%s", _PATH_DEV, argv[2]);
> +  if (err == -1)
> +    {
> +      syslog (LOG_ERR, "asprintf failed %s: %m", argv[2]);
> +      closelog ();
> +      exit (1);
> +    }
>  
> -  chown (ttyname, 0, 0);
> -  chmod (ttyname, 0600);
> -  revoke (ttyname);
> +  err = chown (ttyname, 0, 0);
> +  if (err == -1)
> +    {
> +      syslog (LOG_ERR, "chown failed %s: %m", ttyname);
> +      closelog ();
> +      exit (1);
> +    }
> +  err = chmod (ttyname, 0600);
> +  if (err == -1)
> +    {
> +      syslog (LOG_ERR, "chmod failed %s: %m", ttyname);
> +      closelog ();
> +      exit (1);
> +    }
> +  err = revoke (ttyname);
> +  if (err == -1)
> +    {
> +      syslog (LOG_ERR, "revoke failed %s; %m", ttyname);
> +      closelog ();
> +      exit (1);
> +    }
>    sleep (2);                 /* leave DTR down for a bit */
>  
>    do
> @@ -200,7 +232,13 @@ main (int argc, char **argv)
>    if (login_tty (tty) == -1)
>      syslog (LOG_ERR, "cannot set controlling terminal to %s: %m", ttyname);
>  
> -  asprintf (&arg, "TERM=%s", tt ? tt->ty_type : "unknown");
> +  err = asprintf (&arg, "TERM=%s", tt ? tt->ty_type : "unknown");
> +  if (err == -1)
> +    {
> +      syslog (LOG_ERR, "asprintf failed %s: %m", ttyname);
> +      closelog ();
> +      exit (1);
> +    }
>  
>    if (tt && strcmp (tt->ty_type, "dialup") == 0)
>      /* Dialup lines time out (which is login's default).  */
> diff --git a/daemons/lmail.c b/daemons/lmail.c
> index ee6b6fdc..513d33f8 100644
> --- a/daemons/lmail.c
> +++ b/daemons/lmail.c
> @@ -341,8 +341,8 @@ deliver (int msg, char *msg_name, char *rcpt, int flags, 
> struct params *params)
>    if (! pw)
>      return ERR ("%s: Unknown user", rcpt);
>  
> -  asprintf (&mbox, "%s/%s", params->mail_dir, rcpt);
> -  if (! mbox)
> +  int err = asprintf (&mbox, "%s/%s", params->mail_dir, rcpt);
> +  if (err == -1)
>      return SYSERRX (ENOMEM, "%s", rcpt);
>  
>    do
> diff --git a/daemons/runttys.c b/daemons/runttys.c
> index 1b4b3601..4e6b1b4f 100644
> --- a/daemons/runttys.c
> +++ b/daemons/runttys.c
> @@ -102,8 +102,8 @@ setup_terminal (struct terminal *t, struct ttyent *tt)
>       }
>  
>        char *line;
> -      asprintf (&line, "%s %s", tt->ty_getty, tt->ty_name);
> -      if (line == 0)
> +      int err = asprintf (&line, "%s %s", tt->ty_getty, tt->ty_name);
> +      if (err == -1)
>       {
>         error (0, ENOMEM,
>                "cannot allocate arguments for %s", t->name);
> @@ -319,8 +319,10 @@ restart_terminal (pid_t pid)
>  static void
>  shutdown_terminal (struct terminal *t)
>  {
> +  int err;
>    kill (t->pid, SIGHUP);
> -  revoke (t->name);
> +  err = revoke (t->name);
> +  assert_backtrace (err != -1);
>  }
>  
>  /* Re-read /etc/ttys.  If a line has turned off, kill what's there.
> -- 
> 2.51.0
> 
> 

-- 
Samuel
J'ai beaucoup de mal a lire fcola quand il y a toutes les annonces de howto :
les annonces interessantes sont noyees dans les howto. Ca serait pas mal
de degager toute cette pollution dans un autre groupe.
  JLM in Guide du linuxien pervers : "Cachez ces doc que je ne saurais voir"

Reply via email to