mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-03-10 03:06:37 +00:00
WMBus: check message length for frametype A
git-svn-id: https://svn.fhem.de/fhem/trunk@23789 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
d9124f1c63
commit
353c07e291
@ -2228,6 +2228,11 @@ sub decodeLinkLayer($$)
|
|||||||
$self->{datablocks}++ if $self->{datalen} % LL_BLOCK_SIZE != 0;
|
$self->{datablocks}++ if $self->{datalen} % LL_BLOCK_SIZE != 0;
|
||||||
$self->{msglen} = TL_BLOCK_SIZE + $self->{crc_size} + $self->{datalen} + $self->{datablocks} * $self->{crc_size};
|
$self->{msglen} = TL_BLOCK_SIZE + $self->{crc_size} + $self->{datalen} + $self->{datablocks} * $self->{crc_size};
|
||||||
|
|
||||||
|
if (length($self->{msg}) < $self->{msglen}) {
|
||||||
|
$self->{errormsg} = "message too short, expected " . $self->{msglen} . ", got " . length($self->{msg}) . " bytes";
|
||||||
|
$self->{errorcode} = ERR_MSG_TOO_SHORT;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#printf("calc len %d, actual %d crc_size %d\n", $self->{msglen}, length($self->{msg}), $self->{crc_size});
|
#printf("calc len %d, actual %d crc_size %d\n", $self->{msglen}, length($self->{msg}), $self->{crc_size});
|
||||||
$self->{applicationlayer} = $self->removeCRC(substr($self->{msg},TL_BLOCK_SIZE + $self->{crc_size}));
|
$self->{applicationlayer} = $self->removeCRC(substr($self->{msg},TL_BLOCK_SIZE + $self->{crc_size}));
|
||||||
return 0 if $self->{errorcode};
|
return 0 if $self->{errorcode};
|
||||||
@ -2279,10 +2284,6 @@ sub decodeLinkLayer($$)
|
|||||||
|
|
||||||
if (length($self->{msg}) > $self->{msglen}) {
|
if (length($self->{msg}) > $self->{msglen}) {
|
||||||
$self->{remainingData} = substr($self->{msg},$self->{msglen});
|
$self->{remainingData} = substr($self->{msg},$self->{msglen});
|
||||||
} elsif (length($self->{msg}) < $self->{msglen}) {
|
|
||||||
$self->{errormsg} = "message too short, expected " . $self->{msglen} . ", got " . length($self->{msg}) . " bytes";
|
|
||||||
$self->{errorcode} = ERR_MSG_TOO_SHORT;
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user