Summary
Three UUID-based failed job providers use json_decode($payload, true)['uuid'] without checking if json_decode returned null. If the queue backend delivers a corrupted payload, the provider crashes, and the failed job record is permanently lost — the safety net has a hole.
Version: 13.3.0
Affected files
1. FileFailedJobProvider.php line 59:
$id = json_decode($payload, true)['uuid'];
2. DatabaseUuidFailedJobProvider.php line 58:
'uuid' => $uuid = json_decode($payload, true)['uuid'],
3. DynamoDbFailedJobProvider.php line 60:
$id = json_decode($payload, true)['uuid'];
The non-UUID DatabaseFailedJobProvider is not affected — it stores the raw payload without parsing.