anchor.diff:  decode_name_labels([Label|Labels], Name) ->
       decode_name_labels(Labels, "."++decode_name_label(Label, Name)).
   
  -decode_name_label(<<>>, _Name) ->
  -    %% Empty label is only allowed for the root domain, 
  -    %% and that is handled above.
  -    throw(?DECODE_ERROR);
   decode_name_label(Label, Name) ->
  -    decode_name_label(Label, Name, byte_size(Label)).
  +    ?MATCH_ELSE_DECODE_ERROR(
  +       Label,
  +       _, 1 =< byte_size(Label),
  +       %% Empty label is only allowed for the root domain,
  +       %% and that is handled above.
  +       decode_name_label(Label, Name, byte_size(Label))).
   
   %% Decode $. and $\\ to become $\\ escaped characters
   %% in the string representation.
  
positive.code: %%
  %% %CopyrightBegin%
  %%
  %% Copyright Ericsson AB 1997-2020. All Rights Reserved.
  %%
  %% Licensed under the Apache License, Version 2.0 (the "License");
  %% you may not use this file except in compliance with the License.
  
negative.code: 		Cnt);
  decode_name(<<3:2,Ptr:14,Rest/binary>>, Buffer, Labels, Tail, Cnt) ->
      %% Indirection - reposition in buffer and recurse
      ?MATCH_ELSE_DECODE_ERROR(
         Buffer,
         <<_:Ptr/binary,Bin/binary>>,
         decode_name(
           Bin, Buffer, Labels,
           if Cnt =/= 0 -> Tail; true -> Rest end,
           Cnt+2)); % size of indirection pointer
  decode_name(_, _, _, _, _) -> throw(?DECODE_ERROR).
  
  %% Reverse list of labels (binaries) -> domain name (string)
  