aboutsummaryrefslogtreecommitdiff
path: root/src/lib/protocols/ftp_control.c
diff options
context:
space:
mode:
authortheirix <theirix@gmail.com>2016-04-12 22:08:30 +0300
committertheirix <theirix@gmail.com>2016-04-12 22:08:30 +0300
commitfb3fc0c6de201a2ab34b6f7ce4d5dfc2c54c3b5e (patch)
tree668e579f3df572a36821500bfe80a60e42a10aab /src/lib/protocols/ftp_control.c
parent5a37ee99764b7d262676b0ca052075c9c559c01d (diff)
Fixed buffer overflows with safe str search
1. Detected a lot of memory errors using address sanitizer and ndpi-scapy tool. 2. Added ndpi_match_prefix function that compares strings with taking care of payload packet len. Almost drop-in replacement for match_first_bytes function. 3. Replaced unsafe match_first_bytes usage with a ndpi_match_prefix and additional length checks.
Diffstat (limited to 'src/lib/protocols/ftp_control.c')
-rw-r--r--src/lib/protocols/ftp_control.c456
1 files changed, 228 insertions, 228 deletions
diff --git a/src/lib/protocols/ftp_control.c b/src/lib/protocols/ftp_control.c
index 8710096be..9bc2bf904 100644
--- a/src/lib/protocols/ftp_control.c
+++ b/src/lib/protocols/ftp_control.c
@@ -30,904 +30,904 @@ static void ndpi_int_ftp_control_add_connection(struct ndpi_detection_module_str
ndpi_set_detected_protocol(ndpi_struct, flow, NDPI_PROTOCOL_FTP_CONTROL, NDPI_PROTOCOL_UNKNOWN);
}
-static int ndpi_ftp_control_check_request(const u_int8_t *payload) {
+static int ndpi_ftp_control_check_request(const u_int8_t *payload, size_t payload_len) {
- if (match_first_bytes(payload, "ABOR")) {
+ if (ndpi_match_strprefix(payload, payload_len, "ABOR")) {
return 1;
}
- if (match_first_bytes(payload, "ACCT")) {
+ if (ndpi_match_strprefix(payload, payload_len, "ACCT")) {
return 1;
}
- if (match_first_bytes(payload, "ADAT")) {
+ if (ndpi_match_strprefix(payload, payload_len, "ADAT")) {
return 1;
}
- if (match_first_bytes(payload, "ALLO")) {
+ if (ndpi_match_strprefix(payload, payload_len, "ALLO")) {
return 1;
}
- if (match_first_bytes(payload, "APPE")) {
+ if (ndpi_match_strprefix(payload, payload_len, "APPE")) {
return 1;
}
- if (match_first_bytes(payload, "AUTH")) {
+ if (ndpi_match_strprefix(payload, payload_len, "AUTH")) {
return 1;
}
- if (match_first_bytes(payload, "CCC")) {
+ if (ndpi_match_strprefix(payload, payload_len, "CCC")) {
return 1;
}
- if (match_first_bytes(payload, "CDUP")) {
+ if (ndpi_match_strprefix(payload, payload_len, "CDUP")) {
return 1;
}
- if (match_first_bytes(payload, "CONF")) {
+ if (ndpi_match_strprefix(payload, payload_len, "CONF")) {
return 1;
}
- if (match_first_bytes(payload, "CWD")) {
+ if (ndpi_match_strprefix(payload, payload_len, "CWD")) {
return 1;
}
- if (match_first_bytes(payload, "DELE")) {
+ if (ndpi_match_strprefix(payload, payload_len, "DELE")) {
return 1;
}
- if (match_first_bytes(payload, "ENC")) {
+ if (ndpi_match_strprefix(payload, payload_len, "ENC")) {
return 1;
}
- if (match_first_bytes(payload, "EPRT")) {
+ if (ndpi_match_strprefix(payload, payload_len, "EPRT")) {
return 1;
}
- if (match_first_bytes(payload, "EPSV")) {
+ if (ndpi_match_strprefix(payload, payload_len, "EPSV")) {
return 1;
}
- if (match_first_bytes(payload, "FEAT")) {
+ if (ndpi_match_strprefix(payload, payload_len, "FEAT")) {
return 1;
}
- if (match_first_bytes(payload, "HELP")) {
+ if (ndpi_match_strprefix(payload, payload_len, "HELP")) {
return 1;
}
- if (match_first_bytes(payload, "LANG")) {
+ if (ndpi_match_strprefix(payload, payload_len, "LANG")) {
return 1;
}
- if (match_first_bytes(payload, "LIST")) {
+ if (ndpi_match_strprefix(payload, payload_len, "LIST")) {
return 1;
}
- if (match_first_bytes(payload, "LPRT")) {
+ if (ndpi_match_strprefix(payload, payload_len, "LPRT")) {
return 1;
}
- if (match_first_bytes(payload, "LPSV")) {
+ if (ndpi_match_strprefix(payload, payload_len, "LPSV")) {
return 1;
}
- if (match_first_bytes(payload, "MDTM")) {
+ if (ndpi_match_strprefix(payload, payload_len, "MDTM")) {
return 1;
}
- if (match_first_bytes(payload, "MIC")) {
+ if (ndpi_match_strprefix(payload, payload_len, "MIC")) {
return 1;
}
- if (match_first_bytes(payload, "MKD")) {
+ if (ndpi_match_strprefix(payload, payload_len, "MKD")) {
return 1;
}
- if (match_first_bytes(payload, "MLSD")) {
+ if (ndpi_match_strprefix(payload, payload_len, "MLSD")) {
return 1;
}
- if (match_first_bytes(payload, "MLST")) {
+ if (ndpi_match_strprefix(payload, payload_len, "MLST")) {
return 1;
}
- if (match_first_bytes(payload, "MODE")) {
+ if (ndpi_match_strprefix(payload, payload_len, "MODE")) {
return 1;
}
- if (match_first_bytes(payload, "NLST")) {
+ if (ndpi_match_strprefix(payload, payload_len, "NLST")) {
return 1;
}
- if (match_first_bytes(payload, "NOOP")) {
+ if (ndpi_match_strprefix(payload, payload_len, "NOOP")) {
return 1;
}
- if (match_first_bytes(payload, "OPTS")) {
+ if (ndpi_match_strprefix(payload, payload_len, "OPTS")) {
return 1;
}
- if (match_first_bytes(payload, "PASS")) {
+ if (ndpi_match_strprefix(payload, payload_len, "PASS")) {
return 1;
}
- if (match_first_bytes(payload, "PASV")) {
+ if (ndpi_match_strprefix(payload, payload_len, "PASV")) {
return 1;
}
- if (match_first_bytes(payload, "PBSZ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "PBSZ")) {
return 1;
}
- if (match_first_bytes(payload, "PORT")) {
+ if (ndpi_match_strprefix(payload, payload_len, "PORT")) {
return 1;
}
- if (match_first_bytes(payload, "PROT")) {
+ if (ndpi_match_strprefix(payload, payload_len, "PROT")) {
return 1;
}
- if (match_first_bytes(payload, "PWD")) {
+ if (ndpi_match_strprefix(payload, payload_len, "PWD")) {
return 1;
}
- if (match_first_bytes(payload, "QUIT")) {
+ if (ndpi_match_strprefix(payload, payload_len, "QUIT")) {
return 1;
}
- if (match_first_bytes(payload, "REIN")) {
+ if (ndpi_match_strprefix(payload, payload_len, "REIN")) {
return 1;
}
- if (match_first_bytes(payload, "REST")) {
+ if (ndpi_match_strprefix(payload, payload_len, "REST")) {
return 1;
}
- if (match_first_bytes(payload, "RETR")) {
+ if (ndpi_match_strprefix(payload, payload_len, "RETR")) {
return 1;
}
- if (match_first_bytes(payload, "RMD")) {
+ if (ndpi_match_strprefix(payload, payload_len, "RMD")) {
return 1;
}
- if (match_first_bytes(payload, "RNFR")) {
+ if (ndpi_match_strprefix(payload, payload_len, "RNFR")) {
return 1;
}
- if (match_first_bytes(payload, "RNTO")) {
+ if (ndpi_match_strprefix(payload, payload_len, "RNTO")) {
return 1;
}
- if (match_first_bytes(payload, "SITE")) {
+ if (ndpi_match_strprefix(payload, payload_len, "SITE")) {
return 1;
}
- if (match_first_bytes(payload, "SIZE")) {
+ if (ndpi_match_strprefix(payload, payload_len, "SIZE")) {
return 1;
}
- if (match_first_bytes(payload, "SMNT")) {
+ if (ndpi_match_strprefix(payload, payload_len, "SMNT")) {
return 1;
}
- if (match_first_bytes(payload, "STAT")) {
+ if (ndpi_match_strprefix(payload, payload_len, "STAT")) {
return 1;
}
- if (match_first_bytes(payload, "STOR")) {
+ if (ndpi_match_strprefix(payload, payload_len, "STOR")) {
return 1;
}
- if (match_first_bytes(payload, "STOU")) {
+ if (ndpi_match_strprefix(payload, payload_len, "STOU")) {
return 1;
}
- if (match_first_bytes(payload, "STRU")) {
+ if (ndpi_match_strprefix(payload, payload_len, "STRU")) {
return 1;
}
- if (match_first_bytes(payload, "SYST")) {
+ if (ndpi_match_strprefix(payload, payload_len, "SYST")) {
return 1;
}
- if (match_first_bytes(payload, "TYPE")) {
+ if (ndpi_match_strprefix(payload, payload_len, "TYPE")) {
return 1;
}
- if (match_first_bytes(payload, "USER")) {
+ if (ndpi_match_strprefix(payload, payload_len, "USER")) {
return 1;
}
- if (match_first_bytes(payload, "XCUP")) {
+ if (ndpi_match_strprefix(payload, payload_len, "XCUP")) {
return 1;
}
- if (match_first_bytes(payload, "XMKD")) {
+ if (ndpi_match_strprefix(payload, payload_len, "XMKD")) {
return 1;
}
- if (match_first_bytes(payload, "XPWD")) {
+ if (ndpi_match_strprefix(payload, payload_len, "XPWD")) {
return 1;
}
- if (match_first_bytes(payload, "XRCP")) {
+ if (ndpi_match_strprefix(payload, payload_len, "XRCP")) {
return 1;
}
- if (match_first_bytes(payload, "XRMD")) {
+ if (ndpi_match_strprefix(payload, payload_len, "XRMD")) {
return 1;
}
- if (match_first_bytes(payload, "XRSQ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "XRSQ")) {
return 1;
}
- if (match_first_bytes(payload, "XSEM")) {
+ if (ndpi_match_strprefix(payload, payload_len, "XSEM")) {
return 1;
}
- if (match_first_bytes(payload, "XSEN")) {
+ if (ndpi_match_strprefix(payload, payload_len, "XSEN")) {
return 1;
}
- if (match_first_bytes(payload, "HOST")) {
+ if (ndpi_match_strprefix(payload, payload_len, "HOST")) {
return 1;
}
- if (match_first_bytes(payload, "abor")) {
+ if (ndpi_match_strprefix(payload, payload_len, "abor")) {
return 1;
}
- if (match_first_bytes(payload, "acct")) {
+ if (ndpi_match_strprefix(payload, payload_len, "acct")) {
return 1;
}
- if (match_first_bytes(payload, "adat")) {
+ if (ndpi_match_strprefix(payload, payload_len, "adat")) {
return 1;
}
- if (match_first_bytes(payload, "allo")) {
+ if (ndpi_match_strprefix(payload, payload_len, "allo")) {
return 1;
}
- if (match_first_bytes(payload, "appe")) {
+ if (ndpi_match_strprefix(payload, payload_len, "appe")) {
return 1;
}
- if (match_first_bytes(payload, "auth")) {
+ if (ndpi_match_strprefix(payload, payload_len, "auth")) {
return 1;
}
- if (match_first_bytes(payload, "ccc")) {
+ if (ndpi_match_strprefix(payload, payload_len, "ccc")) {
return 1;
}
- if (match_first_bytes(payload, "cdup")) {
+ if (ndpi_match_strprefix(payload, payload_len, "cdup")) {
return 1;
}
- if (match_first_bytes(payload, "conf")) {
+ if (ndpi_match_strprefix(payload, payload_len, "conf")) {
return 1;
}
- if (match_first_bytes(payload, "cwd")) {
+ if (ndpi_match_strprefix(payload, payload_len, "cwd")) {
return 1;
}
- if (match_first_bytes(payload, "dele")) {
+ if (ndpi_match_strprefix(payload, payload_len, "dele")) {
return 1;
}
- if (match_first_bytes(payload, "enc")) {
+ if (ndpi_match_strprefix(payload, payload_len, "enc")) {
return 1;
}
- if (match_first_bytes(payload, "eprt")) {
+ if (ndpi_match_strprefix(payload, payload_len, "eprt")) {
return 1;
}
- if (match_first_bytes(payload, "epsv")) {
+ if (ndpi_match_strprefix(payload, payload_len, "epsv")) {
return 1;
}
- if (match_first_bytes(payload, "feat")) {
+ if (ndpi_match_strprefix(payload, payload_len, "feat")) {
return 1;
}
- if (match_first_bytes(payload, "help")) {
+ if (ndpi_match_strprefix(payload, payload_len, "help")) {
return 1;
}
- if (match_first_bytes(payload, "lang")) {
+ if (ndpi_match_strprefix(payload, payload_len, "lang")) {
return 1;
}
- if (match_first_bytes(payload, "list")) {
+ if (ndpi_match_strprefix(payload, payload_len, "list")) {
return 1;
}
- if (match_first_bytes(payload, "lprt")) {
+ if (ndpi_match_strprefix(payload, payload_len, "lprt")) {
return 1;
}
- if (match_first_bytes(payload, "lpsv")) {
+ if (ndpi_match_strprefix(payload, payload_len, "lpsv")) {
return 1;
}
- if (match_first_bytes(payload, "mdtm")) {
+ if (ndpi_match_strprefix(payload, payload_len, "mdtm")) {
return 1;
}
- if (match_first_bytes(payload, "mic")) {
+ if (ndpi_match_strprefix(payload, payload_len, "mic")) {
return 1;
}
- if (match_first_bytes(payload, "mkd")) {
+ if (ndpi_match_strprefix(payload, payload_len, "mkd")) {
return 1;
}
- if (match_first_bytes(payload, "mlsd")) {
+ if (ndpi_match_strprefix(payload, payload_len, "mlsd")) {
return 1;
}
- if (match_first_bytes(payload, "mlst")) {
+ if (ndpi_match_strprefix(payload, payload_len, "mlst")) {
return 1;
}
- if (match_first_bytes(payload, "mode")) {
+ if (ndpi_match_strprefix(payload, payload_len, "mode")) {
return 1;
}
- if (match_first_bytes(payload, "nlst")) {
+ if (ndpi_match_strprefix(payload, payload_len, "nlst")) {
return 1;
}
- if (match_first_bytes(payload, "noop")) {
+ if (ndpi_match_strprefix(payload, payload_len, "noop")) {
return 1;
}
- if (match_first_bytes(payload, "opts")) {
+ if (ndpi_match_strprefix(payload, payload_len, "opts")) {
return 1;
}
- if (match_first_bytes(payload, "pass")) {
+ if (ndpi_match_strprefix(payload, payload_len, "pass")) {
return 1;
}
- if (match_first_bytes(payload, "pasv")) {
+ if (ndpi_match_strprefix(payload, payload_len, "pasv")) {
return 1;
}
- if (match_first_bytes(payload, "pbsz")) {
+ if (ndpi_match_strprefix(payload, payload_len, "pbsz")) {
return 1;
}
- if (match_first_bytes(payload, "port")) {
+ if (ndpi_match_strprefix(payload, payload_len, "port")) {
return 1;
}
- if (match_first_bytes(payload, "prot")) {
+ if (ndpi_match_strprefix(payload, payload_len, "prot")) {
return 1;
}
- if (match_first_bytes(payload, "pwd")) {
+ if (ndpi_match_strprefix(payload, payload_len, "pwd")) {
return 1;
}
- if (match_first_bytes(payload, "quit")) {
+ if (ndpi_match_strprefix(payload, payload_len, "quit")) {
return 1;
}
- if (match_first_bytes(payload, "rein")) {
+ if (ndpi_match_strprefix(payload, payload_len, "rein")) {
return 1;
}
- if (match_first_bytes(payload, "rest")) {
+ if (ndpi_match_strprefix(payload, payload_len, "rest")) {
return 1;
}
- if (match_first_bytes(payload, "retr")) {
+ if (ndpi_match_strprefix(payload, payload_len, "retr")) {
return 1;
}
- if (match_first_bytes(payload, "rmd")) {
+ if (ndpi_match_strprefix(payload, payload_len, "rmd")) {
return 1;
}
- if (match_first_bytes(payload, "rnfr")) {
+ if (ndpi_match_strprefix(payload, payload_len, "rnfr")) {
return 1;
}
- if (match_first_bytes(payload, "rnto")) {
+ if (ndpi_match_strprefix(payload, payload_len, "rnto")) {
return 1;
}
- if (match_first_bytes(payload, "site")) {
+ if (ndpi_match_strprefix(payload, payload_len, "site")) {
return 1;
}
- if (match_first_bytes(payload, "size")) {
+ if (ndpi_match_strprefix(payload, payload_len, "size")) {
return 1;
}
- if (match_first_bytes(payload, "smnt")) {
+ if (ndpi_match_strprefix(payload, payload_len, "smnt")) {
return 1;
}
- if (match_first_bytes(payload, "stat")) {
+ if (ndpi_match_strprefix(payload, payload_len, "stat")) {
return 1;
}
- if (match_first_bytes(payload, "stor")) {
+ if (ndpi_match_strprefix(payload, payload_len, "stor")) {
return 1;
}
- if (match_first_bytes(payload, "stou")) {
+ if (ndpi_match_strprefix(payload, payload_len, "stou")) {
return 1;
}
- if (match_first_bytes(payload, "stru")) {
+ if (ndpi_match_strprefix(payload, payload_len, "stru")) {
return 1;
}
- if (match_first_bytes(payload, "syst")) {
+ if (ndpi_match_strprefix(payload, payload_len, "syst")) {
return 1;
}
- if (match_first_bytes(payload, "type")) {
+ if (ndpi_match_strprefix(payload, payload_len, "type")) {
return 1;
}
- if (match_first_bytes(payload, "user")) {
+ if (ndpi_match_strprefix(payload, payload_len, "user")) {
return 1;
}
- if (match_first_bytes(payload, "xcup")) {
+ if (ndpi_match_strprefix(payload, payload_len, "xcup")) {
return 1;
}
- if (match_first_bytes(payload, "xmkd")) {
+ if (ndpi_match_strprefix(payload, payload_len, "xmkd")) {
return 1;
}
- if (match_first_bytes(payload, "xpwd")) {
+ if (ndpi_match_strprefix(payload, payload_len, "xpwd")) {
return 1;
}
- if (match_first_bytes(payload, "xrcp")) {
+ if (ndpi_match_strprefix(payload, payload_len, "xrcp")) {
return 1;
}
- if (match_first_bytes(payload, "xrmd")) {
+ if (ndpi_match_strprefix(payload, payload_len, "xrmd")) {
return 1;
}
- if (match_first_bytes(payload, "xrsq")) {
+ if (ndpi_match_strprefix(payload, payload_len, "xrsq")) {
return 1;
}
- if (match_first_bytes(payload, "xsem")) {
+ if (ndpi_match_strprefix(payload, payload_len, "xsem")) {
return 1;
}
- if (match_first_bytes(payload, "xsen")) {
+ if (ndpi_match_strprefix(payload, payload_len, "xsen")) {
return 1;
}
- if (match_first_bytes(payload, "host")) {
+ if (ndpi_match_strprefix(payload, payload_len, "host")) {
return 1;
}
return 0;
}
-static int ndpi_ftp_control_check_response(const u_int8_t *payload) {
+static int ndpi_ftp_control_check_response(const u_int8_t *payload, size_t payload_len) {
- if (match_first_bytes(payload, "110-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "110-")) {
return 1;
}
- if (match_first_bytes(payload, "120-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "120-")) {
return 1;
}
- if (match_first_bytes(payload, "125-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "125-")) {
return 1;
}
- if (match_first_bytes(payload, "150-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "150-")) {
return 1;
}
- if (match_first_bytes(payload, "202-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "202-")) {
return 1;
}
- if (match_first_bytes(payload, "211-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "211-")) {
return 1;
}
- if (match_first_bytes(payload, "212-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "212-")) {
return 1;
}
- if (match_first_bytes(payload, "213-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "213-")) {
return 1;
}
- if (match_first_bytes(payload, "214-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "214-")) {
return 1;
}
- if (match_first_bytes(payload, "215-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "215-")) {
return 1;
}
- if (match_first_bytes(payload, "220-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "220-")) {
return 1;
}
- if (match_first_bytes(payload, "221-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "221-")) {
return 1;
}
- if (match_first_bytes(payload, "225-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "225-")) {
return 1;
}
- if (match_first_bytes(payload, "226-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "226-")) {
return 1;
}
- if (match_first_bytes(payload, "227-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "227-")) {
return 1;
}
- if (match_first_bytes(payload, "228-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "228-")) {
return 1;
}
- if (match_first_bytes(payload, "229-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "229-")) {
return 1;
}
- if (match_first_bytes(payload, "230-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "230-")) {
return 1;
}
- if (match_first_bytes(payload, "231-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "231-")) {
return 1;
}
- if (match_first_bytes(payload, "232-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "232-")) {
return 1;
}
- if (match_first_bytes(payload, "250-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "250-")) {
return 1;
}
- if (match_first_bytes(payload, "257-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "257-")) {
return 1;
}
- if (match_first_bytes(payload, "331-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "331-")) {
return 1;
}
- if (match_first_bytes(payload, "332-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "332-")) {
return 1;
}
- if (match_first_bytes(payload, "350-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "350-")) {
return 1;
}
- if (match_first_bytes(payload, "421-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "421-")) {
return 1;
}
- if (match_first_bytes(payload, "425-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "425-")) {
return 1;
}
- if (match_first_bytes(payload, "426-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "426-")) {
return 1;
}
- if (match_first_bytes(payload, "430-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "430-")) {
return 1;
}
- if (match_first_bytes(payload, "434-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "434-")) {
return 1;
}
- if (match_first_bytes(payload, "450-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "450-")) {
return 1;
}
- if (match_first_bytes(payload, "451-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "451-")) {
return 1;
}
- if (match_first_bytes(payload, "452-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "452-")) {
return 1;
}
- if (match_first_bytes(payload, "501-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "501-")) {
return 1;
}
- if (match_first_bytes(payload, "502-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "502-")) {
return 1;
}
- if (match_first_bytes(payload, "503-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "503-")) {
return 1;
}
- if (match_first_bytes(payload, "504-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "504-")) {
return 1;
}
- if (match_first_bytes(payload, "530-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "530-")) {
return 1;
}
- if (match_first_bytes(payload, "532-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "532-")) {
return 1;
}
- if (match_first_bytes(payload, "550-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "550-")) {
return 1;
}
- if (match_first_bytes(payload, "551-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "551-")) {
return 1;
}
- if (match_first_bytes(payload, "552-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "552-")) {
return 1;
}
- if (match_first_bytes(payload, "553-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "553-")) {
return 1;
}
- if (match_first_bytes(payload, "631-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "631-")) {
return 1;
}
- if (match_first_bytes(payload, "632-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "632-")) {
return 1;
}
- if (match_first_bytes(payload, "633-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "633-")) {
return 1;
}
- if (match_first_bytes(payload, "10054-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "10054-")) {
return 1;
}
- if (match_first_bytes(payload, "10060-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "10060-")) {
return 1;
}
- if (match_first_bytes(payload, "10061-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "10061-")) {
return 1;
}
- if (match_first_bytes(payload, "10066-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "10066-")) {
return 1;
}
- if (match_first_bytes(payload, "10068-")) {
+ if (ndpi_match_strprefix(payload, payload_len, "10068-")) {
return 1;
}
- if (match_first_bytes(payload, "110 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "110 ")) {
return 1;
}
- if (match_first_bytes(payload, "120 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "120 ")) {
return 1;
}
- if (match_first_bytes(payload, "125 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "125 ")) {
return 1;
}
- if (match_first_bytes(payload, "150 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "150 ")) {
return 1;
}
- if (match_first_bytes(payload, "202 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "202 ")) {
return 1;
}
- if (match_first_bytes(payload, "211 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "211 ")) {
return 1;
}
- if (match_first_bytes(payload, "212 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "212 ")) {
return 1;
}
- if (match_first_bytes(payload, "213 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "213 ")) {
return 1;
}
- if (match_first_bytes(payload, "214 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "214 ")) {
return 1;
}
- if (match_first_bytes(payload, "215 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "215 ")) {
return 1;
}
- if (match_first_bytes(payload, "220 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "220 ")) {
return 1;
}
- if (match_first_bytes(payload, "221 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "221 ")) {
return 1;
}
- if (match_first_bytes(payload, "225 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "225 ")) {
return 1;
}
- if (match_first_bytes(payload, "226 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "226 ")) {
return 1;
}
- if (match_first_bytes(payload, "227 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "227 ")) {
return 1;
}
- if (match_first_bytes(payload, "228 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "228 ")) {
return 1;
}
- if (match_first_bytes(payload, "229 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "229 ")) {
return 1;
}
- if (match_first_bytes(payload, "230 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "230 ")) {
return 1;
}
- if (match_first_bytes(payload, "231 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "231 ")) {
return 1;
}
- if (match_first_bytes(payload, "232 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "232 ")) {
return 1;
}
- if (match_first_bytes(payload, "250 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "250 ")) {
return 1;
}
- if (match_first_bytes(payload, "257 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "257 ")) {
return 1;
}
- if (match_first_bytes(payload, "331 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "331 ")) {
return 1;
}
- if (match_first_bytes(payload, "332 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "332 ")) {
return 1;
}
- if (match_first_bytes(payload, "350 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "350 ")) {
return 1;
}
- if (match_first_bytes(payload, "421 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "421 ")) {
return 1;
}
- if (match_first_bytes(payload, "425 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "425 ")) {
return 1;
}
- if (match_first_bytes(payload, "426 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "426 ")) {
return 1;
}
- if (match_first_bytes(payload, "430 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "430 ")) {
return 1;
}
- if (match_first_bytes(payload, "434 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "434 ")) {
return 1;
}
- if (match_first_bytes(payload, "450 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "450 ")) {
return 1;
}
- if (match_first_bytes(payload, "451 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "451 ")) {
return 1;
}
- if (match_first_bytes(payload, "452 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "452 ")) {
return 1;
}
- if (match_first_bytes(payload, "501 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "501 ")) {
return 1;
}
- if (match_first_bytes(payload, "502 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "502 ")) {
return 1;
}
- if (match_first_bytes(payload, "503 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "503 ")) {
return 1;
}
- if (match_first_bytes(payload, "504 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "504 ")) {
return 1;
}
- if (match_first_bytes(payload, "530 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "530 ")) {
return 1;
}
- if (match_first_bytes(payload, "532 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "532 ")) {
return 1;
}
- if (match_first_bytes(payload, "550 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "550 ")) {
return 1;
}
- if (match_first_bytes(payload, "551 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "551 ")) {
return 1;
}
- if (match_first_bytes(payload, "552 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "552 ")) {
return 1;
}
- if (match_first_bytes(payload, "553 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "553 ")) {
return 1;
}
- if (match_first_bytes(payload, "631 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "631 ")) {
return 1;
}
- if (match_first_bytes(payload, "632 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "632 ")) {
return 1;
}
- if (match_first_bytes(payload, "633 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "633 ")) {
return 1;
}
- if (match_first_bytes(payload, "10054 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "10054 ")) {
return 1;
}
- if (match_first_bytes(payload, "10060 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "10060 ")) {
return 1;
}
- if (match_first_bytes(payload, "10061 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "10061 ")) {
return 1;
}
- if (match_first_bytes(payload, "10066 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "10066 ")) {
return 1;
}
- if (match_first_bytes(payload, "10068 ")) {
+ if (ndpi_match_strprefix(payload, payload_len, "10068 ")) {
return 1;
}
@@ -956,7 +956,7 @@ static void ndpi_check_ftp_control(struct ndpi_detection_module_struct *ndpi_str
if (flow->ftp_control_stage == 0) {
NDPI_LOG(NDPI_PROTOCOL_FTP_CONTROL, ndpi_struct, NDPI_LOG_DEBUG, "FTP_CONTROL stage 0: \n");
- if ((payload_len > 0) && ndpi_ftp_control_check_request(packet->payload)) {
+ if ((payload_len > 0) && ndpi_ftp_control_check_request(packet->payload, payload_len)) {
NDPI_LOG(NDPI_PROTOCOL_FTP_CONTROL, ndpi_struct, NDPI_LOG_DEBUG, "Possible FTP_CONTROL request detected, we will look further for the response...\n");
/* Encode the direction of the packet in the stage, so we will know when we need to look for the response packet. */
@@ -972,7 +972,7 @@ static void ndpi_check_ftp_control(struct ndpi_detection_module_struct *ndpi_str
}
/* This is a packet in another direction. Check if we find the proper response. */
- if ((payload_len > 0) && ndpi_ftp_control_check_response(packet->payload)) {
+ if ((payload_len > 0) && ndpi_ftp_control_check_response(packet->payload, payload_len)) {
NDPI_LOG(NDPI_PROTOCOL_FTP_CONTROL, ndpi_struct, NDPI_LOG_DEBUG, "Found FTP_CONTROL.\n");
ndpi_int_ftp_control_add_connection(ndpi_struct, flow);
} else {