Adds SSH_FLAG_VERSION_PARSED to flags before each return
This way, we are sure SSHParseBanner does not get called again
And proto_version does not get leaked
/* sanity check on this arithmetic */
if ((sw_ver_len <= 1) || (sw_ver_len >= input_len)) {
SCLogDebug("Should not have sw version length '%" PRIu64 "'", sw_ver_len);
+ header->flags |= SSH_FLAG_VERSION_PARSED;
SCReturnInt(-1);
}
header->software_version = SCMalloc(sw_ver_len + 1);
if (header->software_version == NULL) {
+ header->flags |= SSH_FLAG_VERSION_PARSED;
SCReturnInt(-1);
}
memcpy(header->software_version, line_ptr, sw_ver_len);