Bug 465290 - Properties dialog crashes in QWidgetLineControl::internalSetText() with .desktop file that has an equals sign in the Exec key's value
Summary: Properties dialog crashes in QWidgetLineControl::internalSetText() with .desk...
Status: RESOLVED FIXED
Alias: None
Product: frameworks-kio
Classification: Frameworks and Libraries
Component: Properties dialog (show other bugs)
Version: 5.102.0
Platform: Debian testing Linux
: HI crash
Target Milestone: ---
Assignee: KIO Bugs
URL:
Keywords: drkonqi
: 464188 465546 466164 468346 468722 469451 472325 473034 473927 474189 478464 479797 485297 (view as bug list)
Depends on:
Blocks:
 
Reported: 2023-02-04 19:38 UTC by Dmitrii Odintcov
Modified: 2024-04-09 21:27 UTC (History)
24 users (show)

See Also:
Latest Commit:
Version Fixed In: 5.114


Attachments
Crash-inducing autostart .desktop file (468 bytes, text/plain)
2023-02-05 13:33 UTC, Dmitrii Odintcov
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Dmitrii Odintcov 2023-02-04 19:38:05 UTC
Application: systemsettings (5.26.90)

Qt Version: 5.15.8
Frameworks Version: 5.102.0
Operating System: Linux 6.1.0-2-amd64 x86_64
Windowing System: X11
Distribution: Debian GNU/Linux 11 (bullseye)
DrKonqi: 5.26.90 [KCrashBackend]

-- Information about the crash:
Worked fine. I opened an app to add a command line argument, saved, now I can't open properties again (for any app, it seems) because of the segfaults.

The crash can be reproduced every time.

-- Backtrace:
Application: System Settings (systemsettings), signal: Segmentation fault

[KCrash Handler]
#4  0x00007fb31ecb3d64 in QWidgetLineControl::internalSetText(QString const&, int, bool) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#5  0x00007fb31938ab83 in ?? () from /lib/x86_64-linux-gnu/libKF5KIOWidgets.so.5
#6  0x00007fb31938e0f8 in ?? () from /lib/x86_64-linux-gnu/libKF5KIOWidgets.so.5
#7  0x00007fb31938e60a in ?? () from /lib/x86_64-linux-gnu/libKF5KIOWidgets.so.5
#8  0x00007fb3055ef463 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/plasma/kcms/systemsettings/kcm_autostart.so
#9  0x00007fb3055ee171 in ?? () from /usr/lib/x86_64-linux-gnu/qt5/plugins/plasma/kcms/systemsettings/kcm_autostart.so
#10 0x00007fb31bac6c93 in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#11 0x00007fb31b9a3521 in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#12 0x00007fb31b9a53e0 in QV4::QObjectMethod::callInternal(QV4::Value const*, QV4::Value const*, int) const () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#13 0x00007fb31b9c1cb6 in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#14 0x00007fb31b9c53df in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#15 0x00007fb31b957c2e in QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#16 0x00007fb31bae144d in QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#17 0x00007fb31ba92baf in QQmlBoundSignalExpression::evaluate(void**) () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#18 0x00007fb31ba942f8 in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#19 0x00007fb31bac677f in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#20 0x00007fb31dce8a8d in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#21 0x00007fb319195592 in QQuickAction::triggered(QObject*) () from /lib/x86_64-linux-gnu/libQt5QuickTemplates2.so.5
#22 0x00007fb31919657e in ?? () from /lib/x86_64-linux-gnu/libQt5QuickTemplates2.so.5
#23 0x00007fb319197223 in QQuickAction::qt_metacall(QMetaObject::Call, int, void**) () from /lib/x86_64-linux-gnu/libQt5QuickTemplates2.so.5
#24 0x00007fb31bac6c93 in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#25 0x00007fb31b9a20bd in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#26 0x00007fb31b9a53e0 in QV4::QObjectMethod::callInternal(QV4::Value const*, QV4::Value const*, int) const () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#27 0x00007fb31b9c1cb6 in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#28 0x00007fb31b9c53df in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#29 0x00007fb31b957c2e in QV4::Function::call(QV4::Value const*, QV4::Value const*, int, QV4::ExecutionContext const*) () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#30 0x00007fb31bae144d in QQmlJavaScriptExpression::evaluate(QV4::CallData*, bool*) () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#31 0x00007fb31ba92baf in QQmlBoundSignalExpression::evaluate(void**) () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#32 0x00007fb31ba942f8 in ?? () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#33 0x00007fb31bac677f in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () from /lib/x86_64-linux-gnu/libQt5Qml.so.5
#34 0x00007fb31dce8a8d in ?? () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#35 0x00007fb319194221 in QQuickAbstractButtonPrivate::handleRelease(QPointF const&) () from /lib/x86_64-linux-gnu/libQt5QuickTemplates2.so.5
#36 0x00007fb3191b3251 in QQuickControl::mouseReleaseEvent(QMouseEvent*) () from /lib/x86_64-linux-gnu/libQt5QuickTemplates2.so.5
#37 0x00007fb31c0550c8 in QQuickItem::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Quick.so.5
#38 0x00007fb31eb62fae in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#39 0x00007fb31dcb16f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#40 0x00007fb31c07298a in QQuickWindowPrivate::deliverMouseEvent(QQuickPointerMouseEvent*) () from /lib/x86_64-linux-gnu/libQt5Quick.so.5
#41 0x00007fb31c07408d in QQuickWindowPrivate::deliverPointerEvent(QQuickPointerEvent*) () from /lib/x86_64-linux-gnu/libQt5Quick.so.5
#42 0x00007fb31e3493f5 in QWindow::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5
#43 0x00007fb31eb62fae in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#44 0x00007fb31dcb16f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#45 0x00007fb31cbd1057 in QQuickWidget::mouseReleaseEvent(QMouseEvent*) () from /lib/x86_64-linux-gnu/libQt5QuickWidgets.so.5
#46 0x00007fb31eba4db8 in QWidget::event(QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#47 0x00007fb31eb62fae in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#48 0x00007fb31eb6b552 in QApplication::notify(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#49 0x00007fb31dcb16f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#50 0x00007fb31eb6965e in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#51 0x00007fb31ebbdbd8 in ?? () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#52 0x00007fb31ebc0f60 in ?? () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#53 0x00007fb31eb62fae in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Widgets.so.5
#54 0x00007fb31dcb16f8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#55 0x00007fb31e33d3ed in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5
#56 0x00007fb31e311cac in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Gui.so.5
#57 0x00007fb3189a1eba in ?? () from /lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#58 0x00007fb31c4657a9 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#59 0x00007fb31c465a38 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#60 0x00007fb31c465acc in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#61 0x00007fb31dd09836 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#62 0x00007fb31dcb017b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#63 0x00007fb31dcb82d6 in QCoreApplication::exec() () from /lib/x86_64-linux-gnu/libQt5Core.so.5
#64 0x000055a992fb5dee in ?? ()
#65 0x00007fb31df7c18a in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#66 0x00007fb31df7c245 in __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
#67 0x000055a992fb66e1 in ?? ()
[Inferior 1 (process 2432) detached]

Reported using DrKonqi
Comment 1 Dmitrii Odintcov 2023-02-04 19:39:45 UTC
Correction: not any app, but the one I edited
Comment 2 Dmitrii Odintcov 2023-02-04 19:41:57 UTC
Could have been caused by mistakenly adding the argument into the Program field rather than Arguments
Comment 3 Nicolas Fella 2023-02-05 12:43:47 UTC
Can you please go to .config/autostart/ and attach the .desktop file of the entry you edited?
Comment 4 Dmitrii Odintcov 2023-02-05 13:06:30 UTC
(In reply to Nicolas Fella from comment #3)
> Can you please go to .config/autostart/ and attach the .desktop file of the
> entry you edited?

I deleted that one and made one that works (see my previous comment). Do you want one that does cause the crash?
Comment 5 Nicolas Fella 2023-02-05 13:07:24 UTC
Yes, having the content of a .desktop file that causes the crash would help a lot
Comment 6 Dmitrii Odintcov 2023-02-05 13:33:01 UTC
Created attachment 155957 [details]
Crash-inducing autostart .desktop file

Adding the `--window=hide` erroneously to Program instead of Arguments seems to result in the Exec line being quoted
Comment 7 Nicolas Fella 2023-02-05 14:28:09 UTC
The desktop file you attached doesn't crash for me, but editing it to add '' around the Exec does make it crash
Comment 8 Nicolas Fella 2023-02-05 14:47:46 UTC
#5  0x00007fbc01cafe5c in __pthread_kill_implementation () from /lib64/libc.so.6
#6  0x00007fbc01c5fa76 in raise () from /lib64/libc.so.6
#7  0x00007fbc01c497fc in abort () from /lib64/libc.so.6
#8  0x00007fbc02298b75 in qt_message_fatal (message=<synthetic pointer>..., context=...) at global/qlogging.cpp:1914
#9  QMessageLogger::fatal (this=this@entry=0x7ffe6c974560, msg=msg@entry=0x7fbc0258b048 "ASSERT: \"%s\" in file %s, line %d") at global/qlogging.cpp:893
#10 0x00007fbc02297ff5 in qt_assert (assertion=<optimized out>, file=<optimized out>, line=<optimized out>) at global/qglobal.cpp:3391
#11 0x00007fbc04a7e00b in QList<QString>::first (this=0x7ffe6c9747c8) at /home/nico/kde/usr/include/QtCore/qlist.h:361
#12 0x00007fbc04b2c232 in QList<QString>::takeFirst (this=0x7ffe6c9747c8) at /home/nico/kde/usr/include/QtCore/qlist.h:603
#13 0x00007fbc04b182a3 in KDEPrivate::KDesktopPropsPlugin::KDesktopPropsPlugin (this=0x1b0d7b0, _props=0x296de80) at /home/nico/kde/src/kio/src/widgets/kpropertiesdialog.cpp:3411
#14 0x00007fbc04b062e1 in KPropertiesDialogPrivate::insertPages (this=0x3196530) at /home/nico/kde/src/kio/src/widgets/kpropertiesdialog.cpp:640
#15 0x00007fbc04b051ee in KPropertiesDialogPrivate::init (this=0x3196530) at /home/nico/kde/src/kio/src/widgets/kpropertiesdialog.cpp:435
#16 0x00007fbc04b04254 in KPropertiesDialog::KPropertiesDialog (this=0x296de80, item=..., parent=0x0) at /home/nico/kde/src/kio/src/widgets/kpropertiesdialog.cpp:241
#17 0x00007fbbd0013ced in AutostartModel::editApplication (this=0x1cbc740, row=1, context=0x1d19360) at /home/nico/kde/src/plasma-workspace/kcms/autostart/autostartmodel.cpp:468
#18 0x00007fbbd000f111 in AutostartModel::qt_static_metacall (_o=0x1cbc740, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0x7ffe6c974f90) at /home/nico/kde/build/plasma-workspace/kcms/autostart/kcm_autostart_autogen/EWIEGA46WW/moc_autostartmodel.cpp:126
#19 0x00007fbbd000f34c in AutostartModel::qt_metacall (this=0x1cbc740, _c=QMetaObject::InvokeMetaMethod, _id=3, _a=0x7ffe6c974f90) at /home/nico/kde/build/plasma-workspace/kcms/autostart/kcm_autostart_autogen/EWIEGA46WW/moc_autostartmodel.cpp:181
#20 0x00007fbc012b9d23 in QQmlObjectOrGadget::metacall (this=this@entry=0x7ffe6c975230, type=type@entry=QMetaObject::InvokeMetaMethod, index=<optimized out>, index@entry=58, argv=<optimized out>) at qml/qqmlobjectorgadget.cpp:51
#21 0x00007fbc0119d949 in CallMethod (callType=<optimized out>, callArgs=0x3, engine=<optimized out>, argTypes=<optimized out>, argCount=<optimized out>, returnType=<optimized out>, index=<optimized out>, object=...) at /home/nico/workspace/qt5/qtbase/include/QtCore/../../src/corelib/tools/qvarlengtharray.h:189
#22 CallPrecise (object=..., data=..., engine=engine@entry=0x1cb9ff0, callArgs=callArgs@entry=0x7fbbca1406a0, callType=callType@entry=QMetaObject::InvokeMetaMethod) at jsruntime/qv4qobjectwrapper.cpp:1553
#23 0x00007fbc0119f75b in CallOverloaded (callType=<optimized out>, propertyCache=<optimized out>, callArgs=<optimized out>, engine=<optimized out>, data=..., object=...) at jsruntime/qv4qobjectwrapper.cpp:1629
#24 QV4::QObjectMethod::callInternal (this=<optimized out>, thisObject=<optimized out>, argv=<optimized out>, argc=<optimized out>) at jsruntime/qv4qobjectwrapper.cpp:2117
#25 0x00007fbc011ba457 in QV4::FunctionObject::call (argc=<optimized out>, argv=<optimized out>, thisObject=<optimized out>, this=<optimized out>) at ../../include/QtQml/5.15.8/QtQml/private/../../../../../src/qml/jsruntime/qv4functionobject_p.h:202
#26 QV4::Moth::VME::interpret (frame=0x2eddd, engine=0x1cb9ff0, code=0x1ce68f0 "\360\345\022\001\274\177") at jsruntime/qv4vme_moth.cpp:757
#27 0x00007fbc011be70f in QV4::Moth::VME::exec (frame=frame@entry=0x7ffe6c9754d0, engine=engine@entry=0x1cb9ff0) at jsruntime/qv4vme_moth.cpp:466
#28 0x00007fbc01154cf6 in QV4::Function::call (this=this@entry=0x1ce4670, thisObject=<optimized out>, argv=argv@entry=0x7fbbca140600, argc=<optimized out>, context=<optimized out>) at jsruntime/qv4function.cpp:69
#29 0x00007fbc012d35ea in QQmlJavaScriptExpression::evaluate (this=this@entry=0x2d709e0, callData=callData@entry=0x7fbbca1405d0, isUndefined=isUndefined@entry=0x0) at qml/qqmljavascriptexpression.cpp:212
#30 0x00007fbc0128761f in QQmlBoundSignalExpression::evaluate (this=<optimized out>, a=<optimized out>) at ../../include/QtQml/5.15.8/QtQml/private/../../../../../src/qml/jsruntime/qv4jscall_p.h:95
#31 0x00007fbc01288c80 in QQmlBoundSignal_callback (e=0x2d70990, a=0x7ffe6c9770d0) at ../../include/QtQml/5.15.8/QtQml/private/../../../../../src/qml/qml/qqmlboundsignalexpressionpointer_p.h:69
#32 0x00007fbc012b985f in QQmlNotifier::emitNotify (endpoint=<optimized out>, a=0x7ffe6c9770d0) at qml/qqmlnotifier.cpp:104
#33 0x00007fbc024e782d in doActivate<false> (sender=0x2d702f0, signal_index=11, argv=0x7ffe6c9770d0) at kernel/qobject.cpp:3815
Comment 9 Nicolas Fella 2023-02-05 14:48:13 UTC
*** Bug 464188 has been marked as a duplicate of this bug. ***
Comment 10 Nicolas Fella 2023-02-05 15:01:23 UTC
The problem is we have an Exec line like "Exec='solaar --window=hide'". Because of the = it gets parsed as an environment variable and stripped away, leaving an empty command, which causes the crash
Comment 11 Nate Graham 2023-02-06 23:25:16 UTC
Interestingly, desktop-file-validate doesn't flag that file as broken:

$ desktop-file-validate ~/Desktop/crashme.desktop 
/home/nate/Desktop/crashme.desktop: warning: value "" for key "Path" in group "Desktop Entry" does not look like an absolute path
/home/nate/Desktop/crashme.desktop: warning: key "TerminalOptions" in group "Desktop Entry" is deprecated
$ echo $?
0
Comment 12 MarcSerra 2023-02-10 14:42:48 UTC
*** Bug 465546 has been marked as a duplicate of this bug. ***
Comment 13 MarcSerra 2023-02-10 14:44:31 UTC
Exactly the same problem here. After add --window=hide to solaar autostart, I can't edit this entry anymore.

Fresh new installed KDE neon.
Comment 14 Nicolas Fella 2023-03-03 12:22:16 UTC
*** Bug 466757 has been marked as a duplicate of this bug. ***
Comment 15 Peter 2023-04-20 14:48:02 UTC
(In reply to Dmitrii Odintcov from comment #2)
> Could have been caused by mistakenly adding the argument into the Program
> field rather than Arguments

This is exactly what I did, and crashed Plasma.
Comment 16 Nate Graham 2023-04-20 16:29:30 UTC
*** Bug 468722 has been marked as a duplicate of this bug. ***
Comment 17 Nate Graham 2023-08-30 20:09:00 UTC
*** Bug 473927 has been marked as a duplicate of this bug. ***
Comment 18 Nate Graham 2023-08-31 23:03:59 UTC
*** Bug 473998 has been marked as a duplicate of this bug. ***
Comment 19 Nate Graham 2023-09-05 19:33:55 UTC
*** Bug 474189 has been marked as a duplicate of this bug. ***
Comment 20 Nate Graham 2023-09-08 13:00:07 UTC
*** Bug 472325 has been marked as a duplicate of this bug. ***
Comment 21 Nate Graham 2023-12-13 15:28:28 UTC
*** Bug 473290 has been marked as a duplicate of this bug. ***
Comment 22 Nate Graham 2023-12-13 15:28:55 UTC
*** Bug 478464 has been marked as a duplicate of this bug. ***
Comment 23 Nate Graham 2023-12-13 15:29:56 UTC
*** Bug 473034 has been marked as a duplicate of this bug. ***
Comment 24 Nate Graham 2023-12-13 15:31:28 UTC
*** Bug 468346 has been marked as a duplicate of this bug. ***
Comment 25 Nate Graham 2023-12-13 15:31:34 UTC
*** Bug 469451 has been marked as a duplicate of this bug. ***
Comment 26 Nate Graham 2023-12-13 15:32:30 UTC

*** This bug has been marked as a duplicate of bug 466164 ***
Comment 27 Nate Graham 2023-12-13 15:33:27 UTC
In progress with https://invent.kde.org/frameworks/kio/-/merge_requests/1510.
Comment 28 Nate Graham 2023-12-13 15:33:41 UTC
*** Bug 466164 has been marked as a duplicate of this bug. ***
Comment 29 Nate Graham 2023-12-13 15:33:45 UTC
*** Bug 466417 has been marked as a duplicate of this bug. ***
Comment 30 Nate Graham 2023-12-13 15:33:53 UTC
*** Bug 468420 has been marked as a duplicate of this bug. ***
Comment 31 Nate Graham 2023-12-13 15:34:01 UTC
*** Bug 469494 has been marked as a duplicate of this bug. ***
Comment 32 Harald Sitter 2023-12-14 03:24:43 UTC
Git commit 78d4364677fbe658c6e05d19bb158f895403ccc9 by Harald Sitter.
Committed on 14/12/2023 at 04:24.
Pushed by sitter into branch 'master'.

kpropertiesdialog: don't trip over malformed Exec

when the user incorrectly put env vars into the Program field the
resulting desktop file will be somewhat malformed and literally contain

> Exec='FOO=1 Bar'

this then needs careful handling when parsing so we don't accidentally
drain the execline list. when this scenario appears we'll need to assume
the last item in the list is the program as we can't really tell if it
is a program that looks like an env var or an env var without program

M  +8    -0    src/widgets/kpropertiesdialogbuiltin_p.cpp

https://invent.kde.org/frameworks/kio/-/commit/78d4364677fbe658c6e05d19bb158f895403ccc9
Comment 33 Nicolas Fella 2023-12-17 14:18:28 UTC
This is fixed for the properties dialog, but not kmenuedit, which has the same bug
Comment 34 Harald Sitter 2023-12-18 08:06:50 UTC
Git commit ebad60218b9d9e6901ae48c3dec9b90da963809c by Harald Sitter.
Committed on 18/12/2023 at 08:52.
Pushed by sitter into branch 'kf5'.

kpropertiesdialog: don't trip over malformed Exec

when the user incorrectly put env vars into the Program field the
resulting desktop file will be somewhat malformed and literally contain

> Exec='FOO=1 Bar'

this then needs careful handling when parsing so we don't accidentally
drain the execline list. when this scenario appears we'll need to assume
the last item in the list is the program as we can't really tell if it
is a program that looks like an env var or an env var without program
(cherry picked from commit 78d4364677fbe658c6e05d19bb158f895403ccc9)

M  +6    -0    src/widgets/kpropertiesdialog.cpp

https://invent.kde.org/frameworks/kio/-/commit/ebad60218b9d9e6901ae48c3dec9b90da963809c
Comment 35 Nate Graham 2023-12-20 19:53:34 UTC
KMenuEdit actually appears to be fixed as well; I can no longer reproduce the issue there. But just in case I'm wrong, I've marked all the KMenuEdit crashes as duplicates of Bug 466164, so we can just un-dupe that one if needed.
Comment 36 Nate Graham 2023-12-21 00:39:38 UTC
*** Bug 478646 has been marked as a duplicate of this bug. ***
Comment 37 Nicolas Fella 2024-01-19 13:39:22 UTC
*** Bug 479797 has been marked as a duplicate of this bug. ***
Comment 38 Nicolas Fella 2024-04-09 21:27:27 UTC
*** Bug 485297 has been marked as a duplicate of this bug. ***