From: David Levine Date: Tue, 26 Aug 2014 03:06:11 +0000 (-0500) Subject: Check return values of system calls in several sbr .c files, found X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/b02a191a4c725fb987c56dc41b2a81fbd6bff44c?ds=inline;hp=-c Check return values of system calls in several sbr .c files, found with gcc's -D_FORTIFY_SOURCE=2. Updated checks added previously to mhfixmsg.c to be consistent. --- b02a191a4c725fb987c56dc41b2a81fbd6bff44c diff --git a/sbr/error.c b/sbr/error.c index fd74d270..0b6d7777 100644 --- a/sbr/error.c +++ b/sbr/error.c @@ -106,5 +106,7 @@ advertise (char *what, char *tail, char *fmt, va_list ap) } iov->iov_len = strlen (iov->iov_base = "\n"); iov++; - writev (fileno (stderr), iob, iov - iob); + if (writev (fileno (stderr), iob, iov - iob) < 0) { + advise ("stderr", "writev"); + } } diff --git a/sbr/m_draft.c b/sbr/m_draft.c index 9d28606c..de5ac5cc 100644 --- a/sbr/m_draft.c +++ b/sbr/m_draft.c @@ -29,7 +29,9 @@ m_draft (char *folder, char *msg, int use, int *isdf) } *isdf = 1; - chdir (m_maildir ("")); + if (chdir (m_maildir ("")) < 0) { + advise (m_maildir (""), "chdir"); + } strncpy (buffer, m_maildir (folder), sizeof(buffer)); create_folder (buffer, 0, done); diff --git a/sbr/push.c b/sbr/push.c index 39c58acc..c4d0e405 100644 --- a/sbr/push.c +++ b/sbr/push.c @@ -40,8 +40,12 @@ push(void) unregister_for_removal(0); - freopen ("/dev/null", "r", stdin); - freopen ("/dev/null", "w", stdout); + if (freopen ("/dev/null", "r", stdin) == NULL) { + advise ("stdin", "freopen"); + } + if (freopen ("/dev/null", "w", stdout) == NULL) { + advise ("stdout", "freopen"); + } break; default: diff --git a/sbr/ruserpass.c b/sbr/ruserpass.c index 7669f8bb..a55f6803 100644 --- a/sbr/ruserpass.c +++ b/sbr/ruserpass.c @@ -148,7 +148,9 @@ ruserpass(char *host, char **aname, char **apass) } printf("Name (%s:%s): ", host, myname); - fgets(tmp, sizeof(tmp) - 1, stdin); + if (fgets(tmp, sizeof(tmp) - 1, stdin) == NULL) { + advise ("tmp", "fgets"); + } tmp[strlen(tmp) - 1] = '\0'; if (*tmp != '\0') { myname = tmp; diff --git a/sbr/seq_save.c b/sbr/seq_save.c index 5148f745..8ac30867 100644 --- a/sbr/seq_save.c +++ b/sbr/seq_save.c @@ -91,7 +91,9 @@ priv: free(mp->seqname); mp->seqname = NULL; rewind(fp); - ftruncate(fileno(fp), 0); + if (ftruncate(fileno(fp), 0) < 0) { + advise ("sequence file", "ftruncate"); + } } else if ((fp = lkfopendata (seqfile, "w", &failed_to_lock)) == NULL && (m_unlink (seqfile) == -1 || diff --git a/sbr/utils.c b/sbr/utils.c index 610f7904..9dece994 100644 --- a/sbr/utils.c +++ b/sbr/utils.c @@ -79,7 +79,9 @@ pwd(void) if (!mypath || !*mypath || (strcpy (curwd, mypath), chdir (curwd)) == -1) { strcpy (curwd, "/"); - chdir (curwd); + if (chdir (curwd) < 0) { + advise (curwd, "chdir"); + } } return curwd; } diff --git a/uip/mhfixmsg.c b/uip/mhfixmsg.c index 56253803..5385b9ec 100644 --- a/uip/mhfixmsg.c +++ b/uip/mhfixmsg.c @@ -1646,16 +1646,16 @@ strip_crs (CT ct, int *message_mods) { } else if (last_char_was_cr) { if (*cp != '\n') { if (write (fd, "\r", 1) < 0) { - advise (tempfile, "write of CR failed"); + advise (tempfile, "CR write"); } } if (write (fd, cp, 1) < 0) { - advise (tempfile, "write failed"); + advise (tempfile, "write"); } last_char_was_cr = 0; } else { if (write (fd, cp, 1) < 0) { - advise (tempfile, "write failed"); + advise (tempfile, "write"); } last_char_was_cr = 0; }