/* This is kinda ugly, and we hates ugly code, but what ya gonna do? */ if(ret_val == 0) { size_t dst_len = sizeof(attack->service); size_t src_len = atre_captures[ATRE_CAP_SVC].rm_eo - atre_captures[ATRE_CAP_SVC].rm_so; if(src_len < dst_len) { strncpy(attack->service, &log_line[atre_captures[ATRE_CAP_SVC].rm_so], src_len); attack->service[src_len] = '\0'; dst_len = sizeof(attack->ip_addr); src_len = atre_captures[ATRE_CAP_IP].rm_eo - atre_captures[ATRE_CAP_IP].rm_so; if(src_len < dst_len) { strncpy(attack->ip_addr, &log_line[atre_captures[ATRE_CAP_IP].rm_so], src_len); attack->ip_addr[src_len] = '\0'; } else { warn_n("Captured IP address string length exceeds expected max length - skipping", atre_list_p->line_nbr); ret_val = 1; /* error */ } } else { warn_n("Captured service name string length exceeds expected max length - skipping", atre_list_p->line_nbr); ret_val = 1; } break; }