Control: tags -1 patch pending Dear maintainer,
I've prepared an NMU for rrdtool (versioned as 1.4.8-1.3) and uploaded it to DELAYED/7. Please feel free to tell me if I should delay it longer. Regards. -- Nirgal
diff -u rrdtool-1.4.8/debian/changelog rrdtool-1.4.8/debian/changelog --- rrdtool-1.4.8/debian/changelog +++ rrdtool-1.4.8/debian/changelog @@ -1,3 +1,12 @@ +rrdtool (1.4.8-1.3) unstable; urgency=medium + + * Non-maintainer upload. + * Fix setlocale calls, causing free'd memory usage. Thanks Matthias Nagel. + (Closes: #751842) + * Add libpng-dev as an alternative to libpng12-dev. (Closes: #662494) + + -- Jean-Michel Vourgère <nir...@debian.org> Wed, 03 Jun 2015 23:38:18 +0200 + rrdtool (1.4.8-1.2) unstable; urgency=medium * Non-maintainer upload. diff -u rrdtool-1.4.8/debian/control rrdtool-1.4.8/debian/control --- rrdtool-1.4.8/debian/control +++ rrdtool-1.4.8/debian/control @@ -5,7 +5,8 @@ Uploaders: Sebastian Harl <tok...@debian.org>, Alexander Wirt <formo...@debian.org>, Bernd Zeimetz <b...@debian.org> Standards-Version: 3.9.5 Build-Depends: debhelper (>= 9), groff, autotools-dev, dh-autoreconf, gettext, quilt, - zlib1g-dev, libpng12-dev, libcairo2-dev, libpango1.0-dev, libfreetype6-dev, + zlib1g-dev, libpng12-dev | libpng-dev, libcairo2-dev, libpango1.0-dev, + libfreetype6-dev, libdbi0-dev, libxml2-dev, tcl-dev (>= 8), tcl-dev (<= 9), @@ -91,7 +92,7 @@ Package: librrd-dev Architecture: any Section: libdevel -Depends: libc6-dev | libc-dev, librrd4 (= ${binary:Version}), libpng12-dev, zlib1g-dev, libcairo2-dev, libpango1.0-dev, libfreetype6-dev, libxml2-dev, ${misc:Depends} +Depends: libc6-dev | libc-dev, librrd4 (= ${binary:Version}), libpng12-dev|libpng-dev, zlib1g-dev, libcairo2-dev, libpango1.0-dev, libfreetype6-dev, libxml2-dev, ${misc:Depends} Provides: librrd2-dev Conflicts: librrd2-dev Replaces: librrd2-dev diff -u rrdtool-1.4.8/debian/patches/series rrdtool-1.4.8/debian/patches/series --- rrdtool-1.4.8/debian/patches/series +++ rrdtool-1.4.8/debian/patches/series @@ -8,0 +9 @@ +locale only in patch2: unchanged: --- rrdtool-1.4.8.orig/debian/patches/locale +++ rrdtool-1.4.8/debian/patches/locale @@ -0,0 +1,148 @@ +Description: Fix usage of setlocale() + return a pointer to memory handled internally by libc, calling + setlocale twice and using the data returned from the first call + later on causes access to already free'd memory. +Author: Peter Stamfest +Applied-Upstream: commit:0e1608b77ca017b24917877488eacbbf2167c375 +Reviewed-by: Jean-Michel Vourgère <nir...@debian.org> +Last-Update: 2015-06-01 + +Index: rrdtool-1.4.8/src/rrd_create.c +=================================================================== +--- rrdtool-1.4.8.orig/src/rrd_create.c ++++ rrdtool-1.4.8/src/rrd_create.c +@@ -595,8 +595,7 @@ void parseGENERIC_DS( + &(rrd -> ds_def[ds_idx].par[DS_mrhb_cnt].u_cnt), + minstr,maxstr); + */ +- old_locale = setlocale(LC_NUMERIC, NULL); +- setlocale(LC_NUMERIC, "C"); ++ old_locale = setlocale(LC_NUMERIC, "C"); + if (sscanf(def, "%lu:%18[^:]:%18[^:]", + &(rrd->ds_def[ds_idx].par[DS_mrhb_cnt].u_cnt), + minstr, maxstr) == 3) { +Index: rrdtool-1.4.8/src/rrd_dump.c +=================================================================== +--- rrdtool-1.4.8.orig/src/rrd_dump.c ++++ rrdtool-1.4.8/src/rrd_dump.c +@@ -103,9 +103,7 @@ int rrd_dump_cb_r( + return (-1); + } + +- old_locale = setlocale(LC_NUMERIC, NULL); +- setlocale(LC_NUMERIC, "C"); +- ++ old_locale = setlocale(LC_NUMERIC, "C"); + + if (opt_header == 1) { + CB_PUTS("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); +Index: rrdtool-1.4.8/src/rrd_graph.c +=================================================================== +--- rrdtool-1.4.8.orig/src/rrd_graph.c ++++ rrdtool-1.4.8/src/rrd_graph.c +@@ -4012,8 +4012,7 @@ rrd_info_t *rrd_graph_v( + rrd_graph_init(&im); + size_t graphfile_len; + /* a dummy surface so that we can measure text sizes for placements */ +- old_locale = setlocale(LC_NUMERIC, NULL); +- setlocale(LC_NUMERIC, "C"); ++ old_locale = setlocale(LC_NUMERIC, "C"); + rrd_graph_options(argc, argv, &im); + if (rrd_test_error()) { + rrd_info_free(im.grinfo); +Index: rrdtool-1.4.8/src/rrd_rpncalc.c +=================================================================== +--- rrdtool-1.4.8.orig/src/rrd_rpncalc.c ++++ rrdtool-1.4.8/src/rrd_rpncalc.c +@@ -299,8 +299,7 @@ rpnp_t *rpn_parse( + char vname[MAX_VNAME_LEN + 10]; + char *old_locale; + +- old_locale = setlocale(LC_NUMERIC, NULL); +- setlocale(LC_NUMERIC, "C"); ++ old_locale = setlocale(LC_NUMERIC, "C"); + + rpnp = NULL; + expr = (char *) expr_const; +Index: rrdtool-1.4.8/src/rrd_tool.c +=================================================================== +--- rrdtool-1.4.8.orig/src/rrd_tool.c ++++ rrdtool-1.4.8/src/rrd_tool.c +@@ -732,8 +732,7 @@ int HandleInputLine( + if (rrd_xport + (argc - 1, &argv[1], &xxsize, &start, &end, &step, &col_cnt, + &legend_v, &data) == 0) { +- char *old_locale = setlocale(LC_NUMERIC,NULL); +- setlocale(LC_NUMERIC, "C"); ++ char *old_locale = setlocale(LC_NUMERIC, "C"); + row_cnt = (end - start) / step; + ptr = data; + if (json == 0){ +Index: rrdtool-1.4.8/src/rrd_tune.c +=================================================================== +--- rrdtool-1.4.8.orig/src/rrd_tune.c ++++ rrdtool-1.4.8/src/rrd_tune.c +@@ -126,8 +126,7 @@ int rrd_tune( + optcnt++; + switch (opt) { + case 'h': +- old_locale = setlocale(LC_NUMERIC, NULL); +- setlocale(LC_NUMERIC, "C"); ++ old_locale = setlocale(LC_NUMERIC, "C"); + if ((matches = + sscanf(optarg, DS_NAM_FMT ":%ld", ds_nam, + &heartbeat)) != 2) { +@@ -147,8 +146,7 @@ int rrd_tune( + break; + + case 'i': +- old_locale = setlocale(LC_NUMERIC, NULL); +- setlocale(LC_NUMERIC, "C"); ++ old_locale = setlocale(LC_NUMERIC, "C"); + if ((matches = + sscanf(optarg, DS_NAM_FMT ":%lf", ds_nam, &min)) < 1) { + rrd_set_error("invalid arguments for minimum ds value"); +@@ -170,8 +168,7 @@ int rrd_tune( + break; + + case 'a': +- old_locale = setlocale(LC_NUMERIC, NULL); +- setlocale(LC_NUMERIC, "C"); ++ old_locale = setlocale(LC_NUMERIC, "C"); + if ((matches = + sscanf(optarg, DS_NAM_FMT ":%lf", ds_nam, &max)) < 1) { + rrd_set_error("invalid arguments for maximum ds value"); +Index: rrdtool-1.4.8/src/rrd_update.c +=================================================================== +--- rrdtool-1.4.8.orig/src/rrd_update.c ++++ rrdtool-1.4.8/src/rrd_update.c +@@ -970,8 +970,7 @@ static int get_time_from_reading( + *current_time = tmp_time.tv_sec; + *current_time_usec = tmp_time.tv_usec; + } else { +- old_locale = setlocale(LC_NUMERIC, NULL); +- setlocale(LC_NUMERIC, "C"); ++ old_locale = setlocale(LC_NUMERIC, "C"); + errno = 0; + tmp = strtod(updvals[0], 0); + if (errno > 0) { +@@ -1083,8 +1082,7 @@ static int update_pdp_prep( + } + break; + case DST_ABSOLUTE: +- old_locale = setlocale(LC_NUMERIC, NULL); +- setlocale(LC_NUMERIC, "C"); ++ old_locale = setlocale(LC_NUMERIC, "C"); + errno = 0; + pdp_new[ds_idx] = strtod(updvals[ds_idx + 1], &endptr); + if (errno > 0) { +@@ -1102,8 +1100,7 @@ static int update_pdp_prep( + rate = pdp_new[ds_idx] / interval; + break; + case DST_GAUGE: +- old_locale = setlocale(LC_NUMERIC, NULL); +- setlocale(LC_NUMERIC, "C"); ++ old_locale = setlocale(LC_NUMERIC, "C"); + errno = 0; + pdp_new[ds_idx] = + strtod(updvals[ds_idx + 1], &endptr) * interval;