-
Notifications
You must be signed in to change notification settings - Fork 23
Open
Labels
Description
The bug was uncovered by a certificate that defines the empty string for subjectAltName, which our code does not expect and PHP therefore throws an error. Our error handling then only logs the error, but does not mark the target as processed. However, the scan is not completed until all targets have been processed and therefore hangs forever.
Our error handling must be fixed so that it also marks the targets as processed in such cases.
Importing certificate: ...
Undefined offset: 1
#0 /usr/share/icingaweb2/modules/x509/library/X509/CertificateUtils.php(165): Icinga\Application\ApplicationBootstrap->Icinga\Application\{closure}(8, 'Undefined offse...', '/usr/share/icin...', 165, Array)
#1 /usr/share/icingaweb2/modules/x509/library/X509/CertificateUtils.php(249): Icinga\Module\X509\CertificateUtils::splitSANs('')
#2 /usr/share/icingaweb2/modules/x509/library/X509/Job.php(693): Icinga\Module\X509\CertificateUtils::findOrInsertCert(Object(ipl\Sql\Connection), Resource id #1607)
#3 [internal function]: Icinga\Module\X509\Job->Icinga\Module\X509\{closure}(Object(ipl\Sql\Connection))
#4 /usr/share/icinga-php/ipl/vendor/ipl/sql/src/Connection.php(539): call_user_func(Object(Closure), Object(ipl\Sql\Connection))
#5 /usr/share/icingaweb2/modules/x509/library/X509/Job.php(745): ipl\Sql\Connection->transaction(Object(Closure))
#6 /usr/share/icingaweb2/modules/x509/library/X509/Job.php(501): Icinga\Module\X509\Job->processChain(Object(stdClass), Array)
#7 /usr/share/icinga-php/vendor/vendor/react/promise/src/FulfilledPromise.php(28): Icinga\Module\X509\Job->Icinga\Module\X509\{closure}(Object(React\Socket\Connection))
#8 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(134): React\Promise\FulfilledPromise->then(Object(Closure), Object(Closure))
#9 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(168): React\Promise\Promise::React\Promise\{closure}(Object(React\Promise\FulfilledPromise))
#10 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(231): React\Promise\Promise->settle(Object(React\Promise\FulfilledPromise))
#11 /usr/share/icinga-php/vendor/vendor/react/socket/src/TimeoutConnector.php(35): React\Promise\Promise::React\Promise\{closure}(Object(React\Socket\Connection))
#12 /usr/share/icinga-php/vendor/vendor/react/promise/src/FulfilledPromise.php(28): React\Socket\TimeoutConnector->React\Socket\{closure}(Object(React\Socket\Connection))
#13 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(134): React\Promise\FulfilledPromise->then(Object(Closure), Object(Closure))
#14 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(168): React\Promise\Promise::React\Promise\{closure}(Object(React\Promise\FulfilledPromise))
#15 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(231): React\Promise\Promise->settle(Object(React\Promise\FulfilledPromise))
#16 /usr/share/icinga-php/vendor/vendor/react/promise/src/FulfilledPromise.php(28): React\Promise\Promise::React\Promise\{closure}(Object(React\Socket\Connection))
#17 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(134): React\Promise\FulfilledPromise->then(Object(Closure), Object(Closure))
#18 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(168): React\Promise\Promise::React\Promise\{closure}(Object(React\Promise\FulfilledPromise))
#19 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(231): React\Promise\Promise->settle(Object(React\Promise\FulfilledPromise))
#20 /usr/share/icinga-php/vendor/vendor/react/promise/src/FulfilledPromise.php(42): React\Promise\Promise::React\Promise\{closure}(Object(React\Socket\Connection))
#21 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(66): React\Promise\FulfilledPromise->done(Object(Closure), Object(Closure))
#22 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(168): React\Promise\Promise::React\Promise\{closure}(Object(React\Promise\FulfilledPromise))
#23 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(231): React\Promise\Promise->settle(Object(React\Promise\FulfilledPromise))
#24 /usr/share/icinga-php/vendor/vendor/react/promise/src/FulfilledPromise.php(42): React\Promise\Promise::React\Promise\{closure}(Object(React\Socket\Connection))
#25 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(135): React\Promise\FulfilledPromise->done(Object(Closure), Object(Closure), Object(Closure))
#26 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(168): React\Promise\Promise::React\Promise\{closure}(Object(React\Promise\FulfilledPromise))
#27 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(231): React\Promise\Promise->settle(Object(React\Promise\FulfilledPromise))
#28 /usr/share/icinga-php/vendor/vendor/react/promise/src/FulfilledPromise.php(42): React\Promise\Promise::React\Promise\{closure}(Object(React\Socket\Connection))
#29 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(135): React\Promise\FulfilledPromise->done(Object(Closure), Object(Closure), Object(Closure))
#30 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(168): React\Promise\Promise::React\Promise\{closure}(Object(React\Promise\FulfilledPromise))
#31 /usr/share/icinga-php/vendor/vendor/react/promise/src/Promise.php(231): React\Promise\Promise->settle(Object(React\Promise\FulfilledPromise))
#32 /usr/share/icinga-php/vendor/vendor/react/promise/src/Deferred.php(36): React\Promise\Promise::React\Promise\{closure}(NULL)
#33 /usr/share/icinga-php/vendor/vendor/react/socket/src/StreamEncryption.php(135): React\Promise\Deferred->resolve(NULL)
#34 /usr/share/icinga-php/vendor/vendor/react/socket/src/StreamEncryption.php(85): React\Socket\StreamEncryption->toggleCrypto(Resource id #383, Object(React\Promise\Deferred), true, 57)
#35 /usr/share/icinga-php/vendor/vendor/react/event-loop/src/StreamSelectLoop.php(246): React\Socket\StreamEncryption->React\Socket\{closure}(Resource id #383)
#36 /usr/share/icinga-php/vendor/vendor/react/event-loop/src/StreamSelectLoop.php(213): React\EventLoop\StreamSelectLoop->waitForStreamActivity(4311137)
#37 /usr/share/icinga-php/vendor/vendor/react/event-loop/src/Loop.php(55): React\EventLoop\StreamSelectLoop->run()
#38 [internal function]: React\EventLoop\Loop::React\EventLoop\{closure}()
#39 {main}
ref/IP/56318