summaryrefslogtreecommitdiffstats
path: root/output/sqlite3/ulogd_output_SQLITE3.c
diff options
context:
space:
mode:
authorJeremy Sowden <jeremy@azazel.net>2023-08-21 20:42:36 +0100
committerFlorian Westphal <fw@strlen.de>2023-09-14 14:22:49 +0200
commit083d56967d3940a3a29d11c881d1b78e6033c24f (patch)
tree260a2df93c7e57d0a8962d0d7992f34fadf50939 /output/sqlite3/ulogd_output_SQLITE3.c
parent40517221e15e7518980b582cecf290bc5880064e (diff)
sqlite3: insert ipv6 addresses as null rather than garbage
Currently, the plug-in assumes that all IP addresses are 32-bit ipv4 addresses, so ipv6 addresses get truncated and inserted as garbage. Insert nulls instead. Signed-off-by: Jeremy Sowden <jeremy@azazel.net> Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'output/sqlite3/ulogd_output_SQLITE3.c')
-rw-r--r--output/sqlite3/ulogd_output_SQLITE3.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/output/sqlite3/ulogd_output_SQLITE3.c b/output/sqlite3/ulogd_output_SQLITE3.c
index 3a82389..6aeb7a3 100644
--- a/output/sqlite3/ulogd_output_SQLITE3.c
+++ b/output/sqlite3/ulogd_output_SQLITE3.c
@@ -33,6 +33,7 @@
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
+#include <netinet/in.h>
#include <ulogd/ulogd.h>
#include <ulogd/conffile.h>
#include <sqlite3.h>
@@ -178,7 +179,11 @@ sqlite3_interp(struct ulogd_pluginstance *pi)
break;
case ULOGD_RET_IPADDR:
- ret = sqlite3_bind_int(priv->p_stmt, i, k_ret->u.value.ui32);
+ if (k_ret->len == sizeof(struct in_addr))
+ ret = sqlite3_bind_int(priv->p_stmt, i,
+ k_ret->u.value.ui32);
+ else
+ ret = sqlite3_bind_null(priv->p_stmt, i);
break;
case ULOGD_RET_UINT64: