]> Cypherpunks.ru repositories - nncp.git/commitdiff
More errors checking
authorSergey Matveev <stargrave@stargrave.org>
Wed, 22 Jan 2020 15:45:57 +0000 (18:45 +0300)
committerSergey Matveev <stargrave@stargrave.org>
Thu, 23 Jan 2020 10:59:38 +0000 (13:59 +0300)
VERSION
doc/install.texi
doc/news.ru.texi
doc/news.texi
ports/nncp/Makefile
src/lockdir.go
src/sp.go
src/tmp.go
src/toss.go
src/tx.go

diff --git a/VERSION b/VERSION
index 84197c89467dd225393910da7c61a7a480822820..74664af740022e258c944a559486d22cfe8fc3e3 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-5.3.2
+5.3.3
index 55d14999ec8900103142d5df26d4965f2b9ffab0..89c15d547612ad04d0381fac0c02d77fddd40d25 100644 (file)
@@ -1,7 +1,7 @@
 @node Installation
 @unnumbered Installation
 
-@set VERSION 5.3.2
+@set VERSION 5.3.3
 
 Possibly NNCP package already exists for your distribution:
 
index 791f14e8762726419b3d5174d9490a5983bf09e8..5abadc475030b4c1b05dbd8ee49d0c80deb5f326 100644 (file)
@@ -1,6 +1,18 @@
 @node Новости
 @section Новости
 
+@node Релиз 5.3.3
+@subsection Релиз 5.3.3
+@itemize
+
+@item
+Больше различных проверок в коде на ошибки.
+
+@item
+Обновлены зависимые библиотеки.
+
+@end itemize
+
 @node Релиз 5.3.2
 @subsection Релиз 5.3.2
 @itemize
index 671f6e3bfe9238ad884b82d3cb9a1c6af1c98175..244331cb3ad46a2a622d36f771fc844b6efa5acc 100644 (file)
@@ -3,6 +3,18 @@
 
 See also this page @ref{Новости, on russian}.
 
+@node Release 5.3.3
+@section Release 5.3.3
+@itemize
+
+@item
+More various error checks.
+
+@item
+Updated dependencies.
+
+@end itemize
+
 @node Release 5.3.2
 @section Release 5.3.2
 @itemize
index 3efb3ea011d4bca4740fbc7b029d2748e6604f34..527eb9e5af38a733164f1897d968f12888acb9c0 100644 (file)
@@ -1,7 +1,7 @@
 # $FreeBSD: $
 
 PORTNAME=      nncp
-DISTVERSION=   5.3.2
+DISTVERSION=   5.3.3
 CATEGORIES=    net
 MASTER_SITES=  http://www.nncpgo.org/download/
 
index 38144eea6f5b8d73164dfc05388dd8841390446b..875a5bbde49979fb9121d2d185d5f04213d73d16 100644 (file)
@@ -25,7 +25,10 @@ import (
 )
 
 func (ctx *Ctx) LockDir(nodeId *NodeId, lockCtx string) (*os.File, error) {
-       ctx.ensureRxDir(nodeId)
+       if err := ctx.ensureRxDir(nodeId); err != nil {
+               ctx.LogE("lockdir", SDS{}, err, "")
+               return nil, err
+       }
        lockPath := filepath.Join(ctx.Spool, nodeId.String(), lockCtx) + ".lock"
        dirLock, err := os.OpenFile(
                lockPath,
index 21a4a2e0a0f6de59649e3f71d39f6db4c0baa0a9..94b37ff624893f8560a7d4b0f1f0f3ed827c4eff 100644 (file)
--- a/src/sp.go
+++ b/src/sp.go
@@ -475,7 +475,7 @@ func (state *SPState) StartR(conn ConnDeadlined) error {
        state.maxOnlineTime = node.MaxOnlineTime
        sds := SDS{"node": node.Id, "nice": int(state.Nice)}
 
-       if state.Ctx.ensureRxDir(node.Id); err != nil {
+       if err = state.Ctx.ensureRxDir(node.Id); err != nil {
                return err
        }
        var rxLock *os.File
@@ -999,7 +999,11 @@ func (state *SPState) ProcessSP(payload []byte) ([][]byte, error) {
                                }
                                state.wg.Add(1)
                                defer state.wg.Done()
-                               fd.Seek(0, io.SeekStart)
+                               if _, err = fd.Seek(0, io.SeekStart); err != nil {
+                                       fd.Close() // #nosec G104
+                                       state.Ctx.LogE("sp-file", sdsp, err, "")
+                                       return
+                               }
                                state.Ctx.LogD("sp-file", sdsp, "checking")
                                gut, err := Check(fd, file.Hash[:], sdsp, state.Ctx.ShowPrgrs)
                                fd.Close() // #nosec G104
index 91850d746566bdd5d4603db85776932a9ea1a3e9..62ec5bbc9cbdd4d253858666c850168595ab3ba9 100644 (file)
@@ -105,7 +105,9 @@ func (tmp *TmpFileWHash) Commit(dir string) error {
                tmp.Fd.Close() // #nosec G104
                return err
        }
-       tmp.Fd.Close()
+       if err = tmp.Fd.Close(); err != nil {
+               return err
+       }
        checksum := Base32Codec.EncodeToString(tmp.Hsh.Sum(nil))
        tmp.ctx.LogD("tmp", SDS{"src": tmp.Fd.Name(), "dst": checksum}, "commit")
        if err = os.Rename(tmp.Fd.Name(), filepath.Join(dir, checksum)); err != nil {
index a7cb4570da5238586ec94647b076eb5d0f3e84dc..c0aa7bfed2fb3210c42dcff4d71e8494ffcd3ab3 100644 (file)
@@ -89,8 +89,7 @@ func (ctx *Ctx) Toss(
                        continue
                }
                pipeR, pipeW := io.Pipe()
-               errs := make(chan error, 1)
-               go func(job Job) {
+               go func(job Job) error {
                        pipeWB := bufio.NewWriter(pipeW)
                        _, _, err := PktEncRead(
                                ctx.Self,
@@ -98,13 +97,16 @@ func (ctx *Ctx) Toss(
                                bufio.NewReader(job.Fd),
                                pipeWB,
                        )
-                       errs <- err
-                       pipeWB.Flush()
-                       pipeW.Close()
-                       job.Fd.Close()
+                       job.Fd.Close() // #nosec G104
                        if err != nil {
                                ctx.LogE("rx", sds, err, "decryption")
+                               return pipeW.CloseWithError(err)
                        }
+                       if err = pipeWB.Flush(); err != nil {
+                               ctx.LogE("rx", sds, err, "decryption flush")
+                               return pipeW.CloseWithError(err)
+                       }
+                       return pipeW.Close()
                }(job)
                var pkt Pkt
                var err error
@@ -180,7 +182,9 @@ func (ctx *Ctx) Toss(
                                                cmd.Stdin = newNotification(notify, fmt.Sprintf(
                                                        "Exec from %s: %s", sender.Name, argsStr,
                                                ), output)
-                                               cmd.Run()
+                                               if err = cmd.Run(); err != nil {
+                                                       ctx.LogE("rx", sds, err, "notify")
+                                               }
                                        }
                                }
                        }
@@ -250,7 +254,11 @@ func (ctx *Ctx) Toss(
                                        isBad = true
                                        goto Closing
                                }
-                               tmp.Close()
+                               if err = tmp.Close(); err != nil {
+                                       ctx.LogE("rx", sds, err, "copy")
+                                       isBad = true
+                                       goto Closing
+                               }
                                dstPathOrig := filepath.Join(*incoming, dst)
                                dstPath := dstPathOrig
                                dstPathCtr := 0
@@ -298,7 +306,9 @@ func (ctx *Ctx) Toss(
                                                dst,
                                                humanize.IBytes(uint64(pktSize)),
                                        ), nil)
-                                       cmd.Run()
+                                       if err = cmd.Run(); err != nil {
+                                               ctx.LogE("rx", sds, err, "notify")
+                                       }
                                }
                        }
                case PktTypeFreq:
@@ -362,7 +372,9 @@ func (ctx *Ctx) Toss(
                                        cmd.Stdin = newNotification(ctx.NotifyFreq, fmt.Sprintf(
                                                "Freq from %s: %s", sender.Name, src,
                                        ), nil)
-                                       cmd.Run()
+                                       if err = cmd.Run(); err != nil {
+                                               ctx.LogE("rx", sds, err, "notify")
+                                       }
                                }
                        }
                case PktTypeTrns:
index 80357e74ae3fcee8fa59b64fb84d5fb0105d2de3..4c31d92ad3e127a983dcd7edb4f9f7ac54673c0e 100644 (file)
--- a/src/tx.go
+++ b/src/tx.go
@@ -159,9 +159,13 @@ func prepareTxFile(srcPath string) (reader io.Reader, closer io.Closer, fileSize
                }
                fileSize = int64(written)
                if err = tmpW.Flush(); err != nil {
+                       rerr = err
+                       return
+               }
+               if _, err = src.Seek(0, io.SeekStart); err != nil {
+                       rerr = err
                        return
                }
-               src.Seek(0, io.SeekStart)
                r, w := io.Pipe()
                go func() {
                        if _, err := aeadProcess(aead, nonce, false, bufio.NewReader(src), w); err != nil {
@@ -272,16 +276,19 @@ func prepareTxFile(srcPath string) (reader io.Reader, closer io.Closer, fileSize
                        }
                        fd, err := os.Open(e.path)
                        if err != nil {
-                               w.CloseWithError(err)
+                               fd.Close() // #nosec G104
+                               return w.CloseWithError(err)
                        }
-                       _, err = io.Copy(tarWr, bufio.NewReader(fd))
-                       if err != nil {
-                               w.CloseWithError(err)
+                       if _, err = io.Copy(tarWr, bufio.NewReader(fd)); err != nil {
+                               fd.Close() // #nosec G104
+                               return w.CloseWithError(err)
                        }
-                       fd.Close()
+                       fd.Close() // #nosec G104
+               }
+               if err = tarWr.Close(); err != nil {
+                       return w.CloseWithError(err)
                }
-               tarWr.Close()
-               w.Close()
+               return w.Close()
        }()
        return
 }
@@ -492,9 +499,11 @@ func (ctx *Ctx) TxExec(
        if err != nil {
                return err
        }
-       _, err = io.Copy(compressor, in)
-       compressor.Close()
-       if err != nil {
+       if _, err = io.Copy(compressor, in); err != nil {
+               compressor.Close() // #nosec G104
+               return err
+       }
+       if err = compressor.Close(); err != nil {
                return err
        }
        size := int64(compressed.Len())