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"
