From fc8c9df40e76c8cf49dbf8ef00492d2b78f66099 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Sun, 7 Aug 2022 12:29:48 +0200 Subject: [PATCH] Fix a python plugin crash when trying to login with empty credentials --- libnymea-core/integrations/pythonintegrationplugin.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/libnymea-core/integrations/pythonintegrationplugin.cpp b/libnymea-core/integrations/pythonintegrationplugin.cpp index e0494414..5343c970 100644 --- a/libnymea-core/integrations/pythonintegrationplugin.cpp +++ b/libnymea-core/integrations/pythonintegrationplugin.cpp @@ -505,8 +505,9 @@ void PythonIntegrationPlugin::confirmPairing(ThingPairingInfo *info, const QStri PyEval_ReleaseThread(m_threadState); }); - PyObject *pyUsername = PyUnicode_FromString(username.toUtf8().data()); - PyObject *pySecret = PyUnicode_FromString(secret.toUtf8().data()); + // PyUnicode_FromString crashes on empty strings. Creating a new empty python string instead. + PyObject *pyUsername = username.isEmpty() ? PyUnicode_New(1, 127) : PyUnicode_FromString(username.toUtf8().data()); + PyObject *pySecret = secret.isEmpty() ? PyUnicode_New(1, 127) : PyUnicode_FromString(secret.toUtf8().data()); bool result = callPluginFunction("confirmPairing", reinterpret_cast(pyInfo), pyUsername, pySecret); if (!result) { info->finish(Thing::ThingErrorHardwareFailure, "Plugin error: " + pluginName());