From c4d01410dd560e16b0bdd6d7bcd5f28f9825cd3d Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Fri, 10 Nov 2023 10:54:56 +0000
Subject: [PATCH] Make modsec_logger exit on write failure

---
 modsec_logger.go | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/modsec_logger.go b/modsec_logger.go
index 29e3f2bd..29650912 100644
--- a/modsec_logger.go
+++ b/modsec_logger.go
@@ -1,6 +1,5 @@
 // Tool to rewrite mod_security2 logs (very difficult to parse
 // although they are in semi-structured format) to JSON.
-//
 package main
 
 import (
@@ -9,6 +8,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"io"
+	"log"
 	"os"
 	"regexp"
 )
@@ -52,15 +52,24 @@ func parseModSec(w io.Writer, line []byte) bool {
 	return true
 }
 
+func writeLine(w io.Writer, line byte) error {
+	if _, err := w.Write(line); err != nil {
+		return err
+	}
+	return io.WriteString(w, "\n")
+}
+
 func main() {
 	outw := os.Stdout
 
 	scanner := bufio.NewScanner(os.Stdin)
 	for scanner.Scan() {
 		line := scanner.Bytes()
-		if !parseModSec(outw, line) {
-			outw.Write(line)
-			io.WriteString(outw, "\n")
+		if parseModSec(outw, line) {
+			continue
+		}
+		if err := writeLine(outw, line); err != nil {
+			log.Fatal(err)
 		}
 	}
 }
-- 
GitLab