File 0767-snmp-manager-Matching-issues.patch of Package erlang

From 399c25d9e191a57c180093159b52ec19995c8a72 Mon Sep 17 00:00:00 2001
From: Micael Karlberg <bmk@erlang.org>
Date: Thu, 28 Jan 2021 17:45:41 +0100
Subject: [PATCH 1/2] [snmp|manager] Matching issues

In the function handling snmp errors, an unused result (_Error)
could result in matching issues and therefor case clause runtime
error (crash).
Note that this would only happen in *very* unusual error cases.

OTP-17161
---
 lib/snmp/src/manager/snmpm_server.erl | 30 ++++++++++++++-------------
 1 file changed, 16 insertions(+), 14 deletions(-)

diff --git a/lib/snmp/src/manager/snmpm_server.erl b/lib/snmp/src/manager/snmpm_server.erl
index fedb1d2b32..22292818ac 100644
--- a/lib/snmp/src/manager/snmpm_server.erl
+++ b/lib/snmp/src/manager/snmpm_server.erl
@@ -1612,16 +1612,17 @@ handle_snmp_error(#pdu{request_id = ReqId} = Pdu, Reason, State) ->
 
 handle_snmp_error(CrapError, Reason, _State) ->
     error_msg("received crap (snmp) error =>"
-	      "~n~p~n~p", [CrapError, Reason]),
+	      "~n   ~p"
+              "~n   ~p", [CrapError, Reason]),
     ok.
 
 handle_snmp_error(Domain, Addr, ReqId, Reason, State) ->
 
-    ?vtrace("handle_snmp_error -> entry with~n"
-	    "   Domain:  ~p~n"
-	    "   Addr:    ~p~n"
-	    "   ReqId:   ~p~n"
-	    "   Reason:  ~p", [Domain, Addr, ReqId, Reason]),
+    ?vtrace("handle_snmp_error -> entry with"
+	    "~n   Domain:  ~p"
+	    "~n   Addr:    ~p"
+	    "~n   ReqId:   ~p"
+	    "~n   Reason:  ~p", [Domain, Addr, ReqId, Reason]),
 
     case snmpm_config:get_agent_user_id(Domain, Addr) of
 	{ok, UserId} ->
@@ -1629,24 +1630,24 @@ handle_snmp_error(Domain, Addr, ReqId, Reason, State) ->
 		{ok, UserMod, UserData} ->
 		    handle_error(UserId, UserMod, Reason, ReqId, 
 				 UserData, State);
-		_Error ->
+		_Error1 ->
 		    case snmpm_config:user_info() of
 			{ok, DefUserId, DefMod, DefData} ->
 			    handle_error(DefUserId, DefMod, Reason, 
 					 ReqId, DefData, State);
-			_Error ->
+			_Error2 ->
 			    error_msg("failed retreiving the default user "
 				      "info handling snmp error "
 				      "<~p,~p>: ~n~w~n~w",
 				      [Domain, Addr, ReqId, Reason])
 		    end
 	    end;
-	_Error ->
+	_Error3 ->
 	    case snmpm_config:user_info() of
 		{ok, DefUserId, DefMod, DefData} ->
 		    handle_error(DefUserId, DefMod, Reason, 
 				 ReqId, DefData, State);
-		_Error ->
+		_Error4 ->
 		    error_msg("failed retreiving the default user "
 			      "info handling snmp error "
 			      "<~p,~p>: ~n~w~n~w",
@@ -1679,10 +1680,10 @@ do_handle_error(Mod, ReqId, Reason, Data) ->
 handle_snmp_pdu(#pdu{type = 'get-response', request_id = ReqId} = Pdu, 
 		Domain, Addr, State) ->
 
-    ?vtrace("handle_snmp_pdu(get-response) -> entry with~n"
-	    "   Domain:  ~p~n"
-	    "   Addr:    ~p~n"
-	    "   Pdu:     ~p", [Domain, Addr, Pdu]),
+    ?vtrace("handle_snmp_pdu(get-response) -> entry with"
+	    "~n   Domain:  ~p"
+	    "~n   Addr:    ~p"
+	    "~n   Pdu:     ~p", [Domain, Addr, Pdu]),
 
     case ets:lookup(snmpm_request_table, ReqId) of
 
@@ -1843,6 +1844,7 @@ handle_snmp_pdu(#pdu{type = 'get-response', request_id = ReqId} = Pdu,
 	    end
     end;
 
+
 handle_snmp_pdu(CrapPdu, Domain, Addr, _State) ->
     error_msg("received crap (snmp) Pdu from ~w:~w =>"
 	      "~p", [Domain, Addr, CrapPdu]),
-- 
2.26.2

openSUSE Build Service is sponsored by