]> git.ipfire.org Git - thirdparty/ulogd2.git/commitdiff
filter: PWSNIFF: replace malloc+strncpy with strndup
authorJeremy Sowden <jeremy@azazel.net>
Tue, 30 Nov 2021 10:55:35 +0000 (10:55 +0000)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 30 Nov 2021 19:55:17 +0000 (20:55 +0100)
There are a couple of instances of allocating memory with `malloc`,
followed by copying a string to it with `strncpy` and adding an explicit
assignment of `\0` to terminate the string.  Replace them with
`strndup`.

Add an enum to name indices of output keys.

Signed-off-by: Jeremy Sowden <jeremy@azazel.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
filter/ulogd_filter_PWSNIFF.c

index 934ff0e09c4fe84c1c2374264e4b9371c83f7fbc..ef9e02115d8437311af01f26f2073ef9346a6f44 100644 (file)
 #define DEBUGP(format, args...)
 #endif
 
-
 #define PORT_POP3      110
 #define PORT_FTP       21
 
+enum pwsniff_output_keys {
+       PWSNIFF_OUT_KEY_USER,
+       PWSNIFF_OUT_KEY_PASS,
+};
+
 static uint16_t pwsniff_ports[] = {
        PORT_POP3,
        PORT_FTP,
@@ -116,21 +120,17 @@ static int interp_pwsniff(struct ulogd_pluginstance *pi)
 
        if (len) {
                char *ptr;
-               ptr = (char *) malloc(len+1);
+               ptr = strndup((char *)begp, len);
                if (!ptr)
                        return ULOGD_IRET_ERR;
-               strncpy(ptr, (char *)begp, len);
-               ptr[len] = '\0';
-               okey_set_ptr(&ret[0], ptr);
+               okey_set_ptr(&ret[PWSNIFF_OUT_KEY_USER], ptr);
        }
        if (pw_len) {
                char *ptr;
-               ptr = (char *) malloc(pw_len+1);
+               ptr = strndup((char *)pw_begp, pw_len);
                if (!ptr)
                        return ULOGD_IRET_ERR;
-               strncpy(ptr, (char *)pw_begp, pw_len);
-               ptr[pw_len] = '\0';
-               okey_set_ptr(&ret[1], ptr);
+               okey_set_ptr(&ret[PWSNIFF_OUT_KEY_PASS], ptr);
        }
        return ULOGD_IRET_OK;
 }