From: Dmitry Bogatov <kact...@gnu.org> --- uip/distsbr.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/uip/distsbr.c b/uip/distsbr.c index 058875c..f093b91 100644 --- a/uip/distsbr.c +++ b/uip/distsbr.c @@ -35,6 +35,11 @@ distout(char *drft, char *msgnam, char *backup) advise(backup, "unable to rename %s to",drft); return NOTOK; } + + if (ready_msg(msgnam) != OK) { + return NOTOK; + } + if (!(ifp = fopen(backup, "r"))) { advise(backup, "unable to read"); return NOTOK; @@ -42,13 +47,11 @@ distout(char *drft, char *msgnam, char *backup) if (!(ofp = fopen(drft, "w"))) { advise(drft, "unable to create temporary file"); + fclose(ifp); return NOTOK; } chmod(drft, m_gmprot()); - if (ready_msg(msgnam) != OK) { - return NOTOK; - } lseek(hdrfd, (off_t) 0, SEEK_SET); /* msgnam not accurate */ cpydata(hdrfd, fileno(ofp), msgnam, drft); @@ -144,12 +147,14 @@ ready_msg(char *msgnam) cp = m_mktemp2(NULL, "dist", &hdrfd, NULL); if (!cp) { + fclose(ifp); advise("distsbr", "unable to create temporary file"); return NOTOK; } fchmod(hdrfd, 0600); strncpy(tmpfil, cp, sizeof(tmpfil)); if ((out = dup(hdrfd)) == NOTOK || !(ofp = fdopen(out, "w"))) { + fclose(ifp); advise(NULL, "no file descriptors -- you lose big"); return NOTOK; } -- I may be not subscribed. Please, keep me in carbon copy.