detect/ipproto: Use builtin protocol table

Issue 5072

This commit causes the built-in protocol table to be used for protocol
name and number validation.

(cherry picked from commit 4f2f745bed)
pull/7127/head
Jeff Lucovsky 5 years ago committed by Shivani Bhardwaj
parent 834dcf65f6
commit d04b32466f

@ -1,4 +1,4 @@
/* Copyright (C) 2007-2020 Open Information Security Foundation /* Copyright (C) 2007-2022 Open Information Security Foundation
* *
* You can copy, redistribute or modify this Program under the terms of * You can copy, redistribute or modify this Program under the terms of
* the GNU General Public License version 2 as published by the Free * the GNU General Public License version 2 as published by the Free
@ -38,6 +38,7 @@
#include "detect-engine-address.h" #include "detect-engine-address.h"
#include "util-byte.h" #include "util-byte.h"
#include "util-proto-name.h"
#include "util-unittest.h" #include "util-unittest.h"
#include "util-unittest-helper.h" #include "util-unittest-helper.h"
@ -121,13 +122,12 @@ static DetectIPProtoData *DetectIPProtoParse(const char *optstr)
/* Protocol name/number */ /* Protocol name/number */
if (!isdigit((unsigned char)*(args[1]))) { if (!isdigit((unsigned char)*(args[1]))) {
struct protoent *pent = getprotobyname(args[1]); uint8_t proto;
if (pent == NULL) { if (!SCGetProtoByName(args[1], &proto)) {
SCLogError(SC_ERR_INVALID_VALUE, "Malformed protocol name: %s", SCLogError(SC_ERR_INVALID_VALUE, "Unknown protocol name: \"%s\"", str_ptr);
str_ptr);
goto error; goto error;
} }
data->proto = (uint8_t)pent->p_proto; data->proto = proto;
} }
else { else {
if (StringParseUint8(&data->proto, 10, 0, args[1]) <= 0) { if (StringParseUint8(&data->proto, 10, 0, args[1]) <= 0) {

Loading…
Cancel
Save