Fix code analysis failures (#264)
Signed-off-by: Alan Jowett <alanjo@microsoft.com>
diff --git a/vm/ubpf_jit.c b/vm/ubpf_jit.c
index 3d83417..0e7b10f 100644
--- a/vm/ubpf_jit.c
+++ b/vm/ubpf_jit.c
@@ -1,3 +1,6 @@
+// Copyright (c) 2015 Big Switch Networks, Inc
+// SPDX-License-Identifier: Apache-2.0
+
/*
* Copyright 2015 Big Switch Networks, Inc
* Copyright 2017 Google Inc.
@@ -67,6 +70,10 @@
jitted_size = 65536;
buffer = calloc(jitted_size, 1);
+ if (buffer == NULL) {
+ *errmsg = ubpf_error("internal uBPF error: calloc failed: %s\n", strerror(errno));
+ goto out;
+ }
if (ubpf_translate(vm, buffer, &jitted_size, errmsg) < 0) {
goto out;
diff --git a/vm/ubpf_vm.c b/vm/ubpf_vm.c
index ef8778e..29063d6 100644
--- a/vm/ubpf_vm.c
+++ b/vm/ubpf_vm.c
@@ -340,12 +340,10 @@
reg[inst.dst] &= UINT32_MAX;
break;
case EBPF_OP_LSH_IMM:
- reg[inst.dst] = u32(reg[inst.dst]) << SHIFT_MASK_32_BIT(inst.imm);
- reg[inst.dst] &= UINT32_MAX;
+ reg[inst.dst] = (u32(reg[inst.dst]) << SHIFT_MASK_32_BIT(inst.imm) & UINT32_MAX);
break;
case EBPF_OP_LSH_REG:
- reg[inst.dst] = u32(reg[inst.dst]) << SHIFT_MASK_32_BIT(reg[inst.src]);
- reg[inst.dst] &= UINT32_MAX;
+ reg[inst.dst] = (u32(reg[inst.dst]) << SHIFT_MASK_32_BIT(reg[inst.src]) & UINT32_MAX);
break;
case EBPF_OP_RSH_IMM:
reg[inst.dst] = u32(reg[inst.dst]) >> SHIFT_MASK_32_BIT(inst.imm);