Skip to content

Commit

Permalink
Merge pull request FRRouting#14216 from LabNConsulting/ziemba-coverit…
Browse files Browse the repository at this point in the history
…y-pbr-230816

pbrd: address coverity issues reported 230815
  • Loading branch information
donaldsharp authored Aug 19, 2023
2 parents fa8e49c + 5cde1e8 commit 899427b
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 15 deletions.
29 changes: 21 additions & 8 deletions pbrd/pbr_vty.c
Original file line number Diff line number Diff line change
Expand Up @@ -441,18 +441,18 @@ DEFPY (pbr_map_match_dscp,
}

unsigned long ul_dscp;
char *pend;
char *pend = NULL;
uint8_t raw_dscp;

assert(dscp);
ul_dscp = strtol(dscp, &pend, 0);
if (*pend)
ul_dscp = strtoul(dscp, &pend, 0);
if (pend && *pend)
raw_dscp = pbr_map_decode_dscp_enum(dscp);
else
raw_dscp = ul_dscp << 2;
if (raw_dscp > PBR_DSFIELD_DSCP) {
vty_out(vty, "Invalid dscp value: %s%s\n", dscp,
(pend ? "" : " (numeric value must be in range 0-63)"));
((pend && *pend) ? "" : " (numeric value must be in range 0-63)"));
return CMD_WARNING_CONFIG_FAILED;
}

Expand Down Expand Up @@ -790,6 +790,9 @@ DEFPY (pbr_map_action_src_port,
/* clang-format on */
struct pbr_map_sequence *pbrms = VTY_GET_CONTEXT(pbr_map_sequence);

if (!pbrms)
return CMD_WARNING_CONFIG_FAILED;

if (no) {
if (!CHECK_FLAG(pbrms->action_bm, PBR_ACTION_SRC_PORT))
return CMD_SUCCESS;
Expand Down Expand Up @@ -821,6 +824,9 @@ DEFPY (pbr_map_action_dst_port,
/* clang-format on */
struct pbr_map_sequence *pbrms = VTY_GET_CONTEXT(pbr_map_sequence);

if (!pbrms)
return CMD_WARNING_CONFIG_FAILED;

if (no) {
if (!CHECK_FLAG(pbrms->action_bm, PBR_ACTION_DST_PORT))
return CMD_SUCCESS;
Expand Down Expand Up @@ -851,6 +857,9 @@ DEFPY (pbr_map_action_dscp,
/* clang-format on */
struct pbr_map_sequence *pbrms = VTY_GET_CONTEXT(pbr_map_sequence);

if (!pbrms)
return CMD_WARNING_CONFIG_FAILED;

if (no) {
if (!CHECK_FLAG(pbrms->action_bm, PBR_ACTION_DSCP))
return CMD_SUCCESS;
Expand All @@ -859,19 +868,19 @@ DEFPY (pbr_map_action_dscp,
}

unsigned long ul_dscp;
char *pend;
char *pend = NULL;
uint8_t raw_dscp;

assert(dscp);
ul_dscp = strtol(dscp, &pend, 0);
if (*pend)
ul_dscp = strtoul(dscp, &pend, 0);
if (pend && *pend)
raw_dscp = pbr_map_decode_dscp_enum(dscp);
else
raw_dscp = ul_dscp << 2;

if (raw_dscp > PBR_DSFIELD_DSCP) {
vty_out(vty, "Invalid dscp value: %s%s\n", dscp,
(pend ? "" : " (numeric value must be in range 0-63)"));
((pend && *pend) ? "" : " (numeric value must be in range 0-63)"));
return CMD_WARNING_CONFIG_FAILED;
}
if (CHECK_FLAG(pbrms->action_bm, PBR_ACTION_DSCP) &&
Expand All @@ -898,6 +907,9 @@ DEFPY (pbr_map_action_ecn,
/* clang-format on */
struct pbr_map_sequence *pbrms = VTY_GET_CONTEXT(pbr_map_sequence);

if (!pbrms)
return CMD_WARNING_CONFIG_FAILED;

if (no) {
if (!CHECK_FLAG(pbrms->action_bm, PBR_ACTION_ECN))
return CMD_SUCCESS;
Expand Down Expand Up @@ -1342,6 +1354,7 @@ DEFPY(pbr_map_vrf, pbr_map_vrf_cmd,
* If an equivalent set vrf * exists, just return success.
*/
if ((pbrms->forwarding_type == PBR_FT_SETVRF) &&
vrf_name &&
strncmp(pbrms->vrf_name, vrf_name, sizeof(pbrms->vrf_name)) == 0)
return CMD_SUCCESS;
else if (!vrf_name && (pbrms->forwarding_type == PBR_FT_VRF_UNCHANGED))
Expand Down
9 changes: 2 additions & 7 deletions pbrd/pbr_zebra.c
Original file line number Diff line number Diff line change
Expand Up @@ -568,15 +568,10 @@ static bool pbr_encode_pbr_map_sequence(struct stream *s,

/* actions */

SET_FLAG(r.action.flags, PBR_ACTION_TABLE); /* always valid */

/*
* PBR should maintain its own set of action flags that we
* can copy here instead of trying to infer from magic values.
*/

r.action.flags = pbrms->action_bm;

SET_FLAG(r.action.flags, PBR_ACTION_TABLE); /* always valid */

/*
* if the user does not use the command "set vrf name unchanged"
* then pbr_encode_pbr_map_sequence_vrf will not be called
Expand Down

0 comments on commit 899427b

Please sign in to comment.