Skip to content

Commit

Permalink
Fix crash caused by null accountstate due to bad domain identifier pa…
Browse files Browse the repository at this point in the history
…rsed from FPExt

Turns out since we are forced to replace colons with hyphens we need to
replace them back to colons when we receive the domain identifier from
the file provider extension. If we do not then we get a null
accountState pointer in the socket controller and this causes a crash

Signed-off-by: Claudio Cambra <[email protected]>
  • Loading branch information
claucambra committed Oct 15, 2024
1 parent 1dd6a10 commit f50cf8e
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion src/gui/macOS/fileprovidersocketcontroller.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,19 @@ void FileProviderSocketController::parseReceivedLine(const QString &receivedLine
const auto argument = receivedLine.mid(argPos + 1);

if (command == QStringLiteral("FILE_PROVIDER_DOMAIN_IDENTIFIER_REQUEST_REPLY")) {
_accountState = FileProviderDomainManager::accountStateFromFileProviderDomainIdentifier(argument);
auto domainIdentifier = argument;
// Check if we have a port number who's colon has been replaced by a hyphen
// This is a workaround for the fact that we can't use colons as characters in domain names
// Let's check if, after the final hyphen, we have a number -- then it is a port number
const auto portColonPos = argument.lastIndexOf('-');
const auto possiblePort = argument.mid(portColonPos + 1);
auto validInt = false;
const auto port = possiblePort.toInt(&validInt);
if (validInt && port > 0) {
domainIdentifier.replace(portColonPos, 1, ':');
}

_accountState = FileProviderDomainManager::accountStateFromFileProviderDomainIdentifier(domainIdentifier);
sendAccountDetails();
reportSyncState("SYNC_PREPARING");
return;
Expand Down

0 comments on commit f50cf8e

Please sign in to comment.