avoid fatal errors when decoding advert packets
This commit is contained in:
+14
-8
@@ -105,14 +105,20 @@ class CoreParser {
|
|||||||
$m->pub_key = base64_encode(substr($payload, 1, CoreProtocol::PUB_KEY_SIZE));
|
$m->pub_key = base64_encode(substr($payload, 1, CoreProtocol::PUB_KEY_SIZE));
|
||||||
|
|
||||||
if( strlen($payload) > CoreProtocol::PUB_KEY_SIZE + 2 ) {
|
if( strlen($payload) > CoreProtocol::PUB_KEY_SIZE + 2 ) {
|
||||||
$m->type = ord($payload[33]);
|
try {
|
||||||
$m->flags = ord($payload[34]);
|
$m->type = ord($payload[33]);
|
||||||
$m->out_path = substr($payload, 35, CoreProtocol::MAX_PATH_SIZE);
|
$m->flags = ord($payload[34]);
|
||||||
$m->name = substr($payload, 99, 32);
|
$m->out_path = substr($payload, 35, CoreProtocol::MAX_PATH_SIZE);
|
||||||
$m->last_advert_time = unpack('V', substr($payload, 203, 4))[1];
|
$m->name = substr($payload, 99, 32);
|
||||||
$m->lat = unpack('V', substr($payload, 207, 4))[1];
|
$m->last_advert_time = unpack('V', substr($payload, 203, 4))[1];
|
||||||
$m->lon = unpack('V', substr($payload, 211, 4))[1];
|
$m->lat = unpack('V', substr($payload, 207, 4))[1];
|
||||||
$m->last_mod = unpack('V', substr($payload, 215, 4))[1];
|
$m->lon = unpack('V', substr($payload, 211, 4))[1];
|
||||||
|
$m->last_mod = unpack('V', substr($payload, 215, 4))[1];
|
||||||
|
}
|
||||||
|
catch(\Throwable $t) {
|
||||||
|
// hidden problem? packet wasn't long enough so we'll just be missing data i suppose
|
||||||
|
error_log("Tried to decode Advert but packet too small. Packet size: " . strlen($payload) . " and expected 215..");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $m;
|
return $m;
|
||||||
|
|||||||
Reference in New Issue
Block a user