|
@@ -1003,12 +1003,12 @@ static unsigned char snmp_trap_decode(struct asn1_ctx *ctx,
|
|
|
|
|
|
return 1;
|
|
return 1;
|
|
|
|
|
|
|
|
+err_addr_free:
|
|
|
|
+ kfree((unsigned long *)trap->ip_address);
|
|
|
|
+
|
|
err_id_free:
|
|
err_id_free:
|
|
kfree(trap->id);
|
|
kfree(trap->id);
|
|
|
|
|
|
-err_addr_free:
|
|
|
|
- kfree((unsigned long *)trap->ip_address);
|
|
|
|
-
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1126,11 +1126,10 @@ static int snmp_parse_mangle(unsigned char *msg,
|
|
struct snmp_v1_trap trap;
|
|
struct snmp_v1_trap trap;
|
|
unsigned char ret = snmp_trap_decode(&ctx, &trap, map, check);
|
|
unsigned char ret = snmp_trap_decode(&ctx, &trap, map, check);
|
|
|
|
|
|
- /* Discard trap allocations regardless */
|
|
|
|
- kfree(trap.id);
|
|
|
|
- kfree((unsigned long *)trap.ip_address);
|
|
|
|
-
|
|
|
|
- if (!ret)
|
|
|
|
|
|
+ if (ret) {
|
|
|
|
+ kfree(trap.id);
|
|
|
|
+ kfree((unsigned long *)trap.ip_address);
|
|
|
|
+ } else
|
|
return ret;
|
|
return ret;
|
|
|
|
|
|
} else {
|
|
} else {
|