From ff3392b9c9471cd6d837a9ab3abe135ab2d75edf Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Fri, 22 Oct 2010 17:25:15 +0200 Subject: introduce and use xmalloc_fgets/fgetline This fixes problems of having long lines truncated - and we do have very long lines sometimes - curl errors with HTML, list of debuginfos etc. Signed-off-by: Denys Vlasenko --- lib/plugins/Bugzilla.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'lib/plugins/Bugzilla.cpp') diff --git a/lib/plugins/Bugzilla.cpp b/lib/plugins/Bugzilla.cpp index 8d895bad..452d7a58 100644 --- a/lib/plugins/Bugzilla.cpp +++ b/lib/plugins/Bugzilla.cpp @@ -120,21 +120,22 @@ string CReporterBugzilla::Report(const map_crash_data_t& crash_data, /* Consume log from stdout */ string bug_status; - char buf[512]; - while (fgets(buf, sizeof(buf), fp)) + char *buf; + while ((buf = xmalloc_fgetline(fp)) != NULL) { - strchrnul(buf, '\n')[0] = '\0'; if (strncmp(buf, "STATUS:", 7) == 0) bug_status = buf + 7; else if (strncmp(buf, "EXCEPT:", 7) == 0) { + CABRTException e(EXCEP_PLUGIN, "%s", buf + 7); + free(buf); fclose(fp); waitpid(pid, NULL, 0); - throw CABRTException(EXCEP_PLUGIN, "%s", buf + 7); + throw e; } - else - update_client("%s", buf); + update_client("%s", buf); + free(buf); } fclose(fp); /* this also closes pipefds[0] */ -- cgit