From: dcoppa Date: Tue, 12 May 2015 11:56:55 +0000 (+0200) Subject: Be careful about the lifetime of stack variables X-Git-Tag: 2.5~78^2 X-Git-Url: https://git.sur5r.net/?p=minitube;a=commitdiff_plain;h=9b1ff7b5b800f5e34f39bf9289d0bd0ca89949c4 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 --- 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++;