@node Installation
@unnumbered Installation
-@set VERSION 5.3.2
+@set VERSION 5.3.3
Possibly NNCP package already exists for your distribution:
@node Новости
@section Новости
+@node Релиз 5.3.3
+@subsection Релиз 5.3.3
+@itemize
+
+@item
+Больше различных проверок в коде на ошибки.
+
+@item
+Обновлены зависимые библиотеки.
+
+@end itemize
+
@node Релиз 5.3.2
@subsection Релиз 5.3.2
@itemize
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
# $FreeBSD: $
PORTNAME= nncp
-DISTVERSION= 5.3.2
+DISTVERSION= 5.3.3
CATEGORIES= net
MASTER_SITES= http://www.nncpgo.org/download/
)
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,
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
}
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
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 {
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,
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
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")
+ }
}
}
}
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
dst,
humanize.IBytes(uint64(pktSize)),
), nil)
- cmd.Run()
+ if err = cmd.Run(); err != nil {
+ ctx.LogE("rx", sds, err, "notify")
+ }
}
}
case PktTypeFreq:
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:
}
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 {
}
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
}
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())