Add vCard field validation in WhoisService

Added checks to ensure vCard fields are arrays with at least 4 elements before accessing their values. This prevents potential errors when parsing registrar and abuse contact information from RDAP responses.
This commit is contained in:
Hosteroid
2025-10-21 14:51:28 +03:00
parent 430bd81cb9
commit 92319b27f7

View File

@@ -392,10 +392,12 @@ class WhoisService
// Get registrar name from vCard // Get registrar name from vCard
if (isset($entity['vcardArray'][1])) { if (isset($entity['vcardArray'][1])) {
foreach ($entity['vcardArray'][1] as $vcardField) { foreach ($entity['vcardArray'][1] as $vcardField) {
if ($vcardField[0] === 'fn') { if (is_array($vcardField) && count($vcardField) >= 4) {
$info['registrar'] = $vcardField[3]; if ($vcardField[0] === 'fn') {
} elseif ($vcardField[0] === 'url') { $info['registrar'] = $vcardField[3];
$info['registrar_url'] = $vcardField[3]; } elseif ($vcardField[0] === 'url') {
$info['registrar_url'] = $vcardField[3];
}
} }
} }
} }
@@ -406,8 +408,10 @@ class WhoisService
if (in_array('abuse', $subEntity['roles'] ?? [])) { if (in_array('abuse', $subEntity['roles'] ?? [])) {
if (isset($subEntity['vcardArray'][1])) { if (isset($subEntity['vcardArray'][1])) {
foreach ($subEntity['vcardArray'][1] as $vcardField) { foreach ($subEntity['vcardArray'][1] as $vcardField) {
if ($vcardField[0] === 'email') { if (is_array($vcardField) && count($vcardField) >= 4) {
$info['abuse_email'] = $vcardField[3]; if ($vcardField[0] === 'email') {
$info['abuse_email'] = $vcardField[3];
}
} }
} }
} }