Skip to content

Commit b347e4b

Browse files
authored
Merge pull request #39591 from nextcloud/backport/stable25/fix/noid/imip-plugin-null-hardening
fix(caldav): harden null handling of iMip scheduling method
2 parents a54fc0a + d66cf1e commit b347e4b

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

apps/dav/lib/CalDAV/Schedule/IMipPlugin.php

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ public function schedule(Message $iTipMessage) {
177177
$iTipMessage->scheduleStatus = '5.0; EMail delivery failed';
178178
return;
179179
}
180-
$recipientName = $iTipMessage->recipientName ?: null;
180+
$recipientName = $iTipMessage->recipientName ? (string)$iTipMessage->recipientName : null;
181181

182182
$newEvents = $iTipMessage->message;
183183
$oldEvents = $this->getVCalendar();
@@ -213,9 +213,11 @@ public function schedule(Message $iTipMessage) {
213213
$senderName = $senderName->getValue() ?? null;
214214
}
215215

216-
if ($senderName === null || empty(trim($senderName))) {
216+
// Try to get the sender name from the current user id if available.
217+
if ($this->userId !== null && ($senderName === null || empty(trim($senderName)))) {
217218
$senderName = $this->userManager->getDisplayName($this->userId);
218219
}
220+
219221
$sender = substr($iTipMessage->sender, 7);
220222
if($sender === false) {
221223
$sender = Util::getDefaultEmailAddress('invitations-noreply');
@@ -236,17 +238,26 @@ public function schedule(Message $iTipMessage) {
236238
break;
237239
}
238240

239-
240241
$data['attendee_name'] = ($recipientName ?: $recipient);
241242
$data['invitee_name'] = ($senderName ?: $sender);
242243

243244
$fromEMail = Util::getDefaultEmailAddress('invitations-noreply');
244245
$fromName = $this->imipService->getFrom($senderName, $this->defaults->getName());
245246

246247
$message = $this->mailer->createMessage()
247-
->setFrom([$fromEMail => $fromName])
248-
->setTo([$recipient => $recipientName ?: $recipient])
249-
->setReplyTo([$sender => $senderName]);
248+
->setFrom([$fromEMail => $fromName]);
249+
250+
if ($recipientName !== null) {
251+
$message->setTo([$recipient => $recipientName]);
252+
} else {
253+
$message->setTo([$recipient]);
254+
}
255+
256+
if ($senderName !== null) {
257+
$message->setReplyTo([$sender => $senderName]);
258+
} else {
259+
$message->setReplyTo([$sender]);
260+
}
250261

251262
$template = $this->mailer->createEMailTemplate('dav.calendarInvite.' . $method, $data);
252263
$template->addHeader();

apps/dav/lib/CalDAV/Schedule/IMipService.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,15 @@ public function __construct(URLGenerator $urlGenerator,
7070
}
7171

7272
/**
73-
* @param string $senderName
74-
* @param $default
73+
* @param string|null $senderName
74+
* @param string $default
7575
* @return string
7676
*/
77-
public function getFrom(string $senderName, $default): string {
77+
public function getFrom(?string $senderName, string $default): string {
78+
if ($senderName === null) {
79+
return $default;
80+
}
81+
7882
return $this->l10n->t('%1$s via %2$s', [$senderName, $default]);
7983
}
8084

0 commit comments

Comments
 (0)