From 9b1ff7b5b800f5e34f39bf9289d0bd0ca89949c4 Mon Sep 17 00:00:00 2001 From: dcoppa Date: Tue, 12 May 2015 13:56:55 +0200 Subject: [PATCH] Be careful about the lifetime of stack variables This commit fixes minitube hanging indefinitely on OpenBSD while showing search results. ptr is pointing to free'd memory, causing an infinite loop when parsing video duration property into src/paginatedvideosource.cpp (L148) See also the following links for a better explanation: http://blog.aaronballman.com/2011/07/returning-stack-based-values/ https://wiki.qt.io/Qt_project_org_faq#How_can_I_convert_a_QString_to_char.2A_and_vice_versa.3F --- src/datautils.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/datautils.cpp b/src/datautils.cpp index 11bb943..36811b0 100644 --- a/src/datautils.cpp +++ b/src/datautils.cpp @@ -50,7 +50,9 @@ uint DataUtils::parseIsoPeriod(const QString &isoPeriod) { uint days = 0, hours = 0, minutes = 0, seconds = 0; - const char *ptr = isoPeriod.toStdString().c_str(); + QByteArray ba = isoPeriod.toLocal8Bit(); + const char *ptr = ba.data(); + while (*ptr) { if(*ptr == 'P' || *ptr == 'T') { ptr++; -- 2.39.5