From 4c5842aa8f3bdbf4d2d21dc31eb498f808fc2533 Mon Sep 17 00:00:00 2001 From: smittythekid <57874528+smittythekid@users.noreply.github.com> Date: Wed, 8 Apr 2026 20:41:21 +0200 Subject: [PATCH] =?UTF-8?q?L=C3=A4ngenpr=C3=BCfung=20f=C3=BCr=20Nachricht?= =?UTF-8?q?=20integriert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- consoleInput.txt | 9 +++++++-- src/main/java/vs/SyslogServer.java | 10 ++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/consoleInput.txt b/consoleInput.txt index 85b6992..fc0fde2 100644 --- a/consoleInput.txt +++ b/consoleInput.txt @@ -2,7 +2,12 @@ Dokumentation Befehle für Konsole mvn exec:java -Dexec.mainClass="vs.SyslogServer" > startet den SyslogServer +> Strg + C um Server im Terminal aus Endlosschleife zu beenden -echo "test" | nc -u 127.0.0.1 5514 -> Test ob Server auf dem Port 5514 aktiv zuhört; True --> "Nachricht empfangen!" +echo "test" | nc -u -w1 127.0.0.1 5514 +> Test ob Server auf dem Port 5514 aktiv zuhört und Nachricht korrekt ankommt +> w1 damit nach einer Sekunde beendet wird, netcat (nc) wartet bei UDP manchmal auf eine Antwort + +python3 -c "print('A'*600)" | nc -u -w1 127.0.0.1 5514 +> Test Maximallänge überschritten diff --git a/src/main/java/vs/SyslogServer.java b/src/main/java/vs/SyslogServer.java index 7ead3d4..025443e 100644 --- a/src/main/java/vs/SyslogServer.java +++ b/src/main/java/vs/SyslogServer.java @@ -14,9 +14,13 @@ public class SyslogServer { server.start(port); } + private static final int MAX_MESSAGE_SIZE = 480; + public void start(int port) { + System.out.println("Syslog Server started on port " + port); + try{ // Create a DatagramSocket to listen for incoming messages DatagramSocket socket = new DatagramSocket(port); @@ -32,6 +36,12 @@ public class SyslogServer { // Extract the message from the packet + data; how many bytes were actually received int length = packet.getLength(); + + + if (length > MAX_MESSAGE_SIZE) { + System.err.println("Received message exceeds maximum allowed size of " + MAX_MESSAGE_SIZE + " bytes. Message will be ignored."); + continue; // Skip processing this message + } String message = new String( packet.getData(), // complete byte array be aware: packet.getData() returns the entire buffer, not just the received data